Loading...
2022. 2. 25. 15:43

[Python] Python Database API - Python에서는 어떻게 DB와 연결할까?

오늘은 기초적인 지식을 돌아보겠습니다.​ 우리가 서버를 개발하다 보면 자연스레 등장하는 것이 바로 Database입니다. 사용자가 요청한 데이터를 저장하는 데도 데이터베이스를 사용하고, 그 데이터를 액세스하는 데도 데이터베이스를 사용하는데, 이 데이터베이스는 도대체 무엇일까요? What is Database ? 데이터베이스, 현대 컴퓨터 프로그래밍(?)을 공부하다보면 자연스레 등장하는 단어입니다. 데이터베이스란, 컴퓨터 시스템에서 전자적으로 저장되고 액세스되는 조직화 된 데이터 모음을 이야기합니다. 한마디로 현실 세계에 존재하는 숫자, 문자 등의 데이터를 전자적으로(메모리, 디스크) 저장하고, 이를 조직화하여 액세스 하는 것이죠. 그럼 DBMS는 무엇일까요? DBMS는 Database Management..

2022. 1. 9. 14:18

[Python] anyio - 한 층 더 강화된 비동기 패러다임

어느덧 실무에서 Python 백엔드 엔지니어로 보낸지 1년이 조금 넘었습니다. 많은 고민과 고난, 그리고 이 자리에 오기까지 수많은 반성과 노력으로 파이썬 백엔드 엔지니어로써의 자리를 잡았던 것 같습니다. 오늘 이야기를 위해 단도직입적으로 말씀드리자면 Python은 Java의 Spring과 달리 동기 처리보다는 비동기 처리가 더 나은 빛의 성능을 보인다는 것입니다. 하지만 파이썬의 비동기 패러다임은 그 역사가 매우 복잡하다고 할 수 있을 정도로 수많은 라이브러리가 있고 그 마저도 쓰기 어려운 부분에 속합니다. Coroutine과 asyncio Python의 동시성 처리는 Thread, Process와 같이 동기적인 방법으로 수행되었습니다. 하지만 Process를 이용한 동시성 처리는 Context swi..

2021. 5. 2. 19:38

[FastAPI] 10. Middleware를 이용한 전후 처리

API를 호출할 때 처리 시간이 어느 정도 소모되는지 궁금하다거나 클라이언트로부터 요청을 받았을 때 받은 EndPoint와 데이터가 궁금하다면 어떻게 해야할까요? Middleware Spring에서는 Intercepter, Filter와 같은 중간 처리 방법이 있다면, Flask에서는 App Context 중 after_request나 before_request 등의 콜백 함수로 받아 처리하는 등 여러가지 방법이 있습니다. FastAPI에는 Middleware 패턴을 가지고 있습니다. Middleware 패턴은 API 호출 전후를 중심으로 하나의 콜백 함수가 실행되고 난 뒤, API Router로 요청을 넘기는 패턴입니다. 클라이언트가 요청을 받으면 이 요청은 먼저 Middleware에서 받게 됩니다. ..

2021. 2. 13. 13:26

[FastAPI] 6. Google-auth 및 PyJWT를 이용한 OAuth2 인증 구현 1

이번 포스트에서는 인증에 대한 이야기를 해보고자 합니다. Spring에서는 Spring Security라는 모듈을 제공하여 개발자가 인증에 대한 구현을 개별적으로 하지 않고도 쉽게 구현할 수 있는 방법이 존재했습니다. 이를 통하여 Google 개발자 콘솔에서 Client ID를 미리 발급받은 후 구현되어 있는 구현체만 잘 사용하면 어렵지 않게 OAuth2 인증을 구현할 수 있었죠. FastAPI도 이와 비슷하게 OAuth2 인증을 구현하지만 JWT를 사용하는 것에는 별도의 구현 처리를 해줘야 합니다. 이번 포스트에서는 이 두 라이브러리를 가지고 OAuth2 인증을 어떻게 구현할 수 있는지에 대해 알아보겠습니다. [Spring boot] Spring boot Security로 시작해보는 인증 Spring ..

2020. 12. 25. 16:42

[FastAPI] 1. GET, POST, PUT, DELETE 등 기본 API 만들고 문서 자동화 해보기

지난 글에 이어서 FastAPI를 이용해서 기본적인 REST API 개발 이야기 두 번째를 이어가보도록 하겠습니다. 우리가 REST API를 개발하면 주요 메소드 종류 5가지가 있는데요. 바로 GET, POST, PUT, DELETE, PATCH 이렇게 5가지 입니다. 물론 이 외에도 OPTIONS가 있지만 이 글에서는 다루지 않겠습니다. 기본 API 만들기 (GET) REST API의 기본 API는 먼저 GET 메소드부터 시작됩니다. GET 메소드는 서버로부터 리소스를 가져올 때 쓰는 READ API 입니다. FastAPI에서는 아래의 두 가지 방법으로 작성할 수 있습니다. from fastapi import FastAPI app = FastAPI() @app.route('/health') async ..

2020. 12. 25. 15:16

[Python] FastAPI 프레임워크를 이용한 비동기 REST API 개발

Python 언어를 이용하여 REST API 서버를 만들 수 있는 방법은 여러 방법이 있습니다. 국내 혹은 많은 개발자들의 사랑을 받고 있는 Django, 그리고 가벼운 프레임워크로써 많이 사용하고 있는 Flask 등 여러가지가 있는데요. 이번 글에서는 Jetbrains의 IDE 도구인 PyCharm과 FastAPI 프레임워크를 이용해서 REST API 서버를 개발하는 시간을 가져보도록 하겠습니다. What is FastAPI? Python에서는 웹 서버와 연동하기 위해 WSGI라는 인터페이스를 사용합니다. 그러나 WSGI는 동기 방식으로 프로그램을 처리하기 때문에 미리 들어온 요청을 처리할 때까지 다음 사람이 계속 기다려야 하는 단점을 감수해야 합니다. FastAPI는 Starlette이라는 비동기 프..

2020. 12. 20. 11:14

[Python] PyCharm에서 Poetry를 이용한 디펜던시 관리

소프트웨어 개발시 디펜던시의 관리는 이제 선택이 아닌 필수가 되었습니다. 여태까지 Python 언어를 이용해 소프트웨어 개발을 하였을 때는 requirement를 이용하여 환경별로 디펜던시 관리를 했었습니다. 그러나 requirements는 하나의 디펜던시를 설치할 때 하위 요소까지 설치해주지 않아 종속되는 디펜던시를 수동으로 설치해야 하는 불편함이 있습니다. Poetry Poetry - Python dependency management and packaging made easy. Intuitive CLI Poetry's commands are intuitive and easy to use, with sensible defaults while still being configurable. Soon ex..

2020. 12. 6. 18:42

[Python] REST API 개발로 알아보는 WSGI, ASGI

REST API 서버를 개발하기 위해서는 이제 특정 언어를 배워야 할 필요 없이 원하는 언어로 자유롭게 개발할 수 있는 세상이 오게 되었습니다. Python 언어 또한 다양한 프레임워크를 제공함으로써 REST API 서버를 쉽게 개발할 수 있는데요. 이를 제공하는 다양한 프레임워크가 많이 존재하지만 그 중 가장 보편화 되어 알려진 프레임워크는 아래의 두 가지 일 것입니다. Django Flask Django는 MTV 패턴을 제공하여 API 뿐만 아니라 템플릿을 이용하여 정적 HTML 파일을 생성해 뷰를 만들 수 있도록 제공하여 빠른 개발을 통해 높은 생산성을 자랑하는 프레임워크입니다. 반면 Flask는 오직 API만을 쉽게 제공하여 빠른 API 서버만을 만들 수 있도록 제공하는 것이 특징이죠. Sprin..