본문 바로가기
반응형

Backend MLOps56

[Fastapi] asyncio 제대로 써보기 with pytest - 2 지난 포스팅들에서 asyncio를 통한 비동기 처리가 무엇인지 한번 정리했다. 비동기 처리는 io-job에서 발생하는 요청-응답 사이의 시간지연을 회피하여 전반적인 프로세싱의 효율을 올릴 수 있는 방식이었다. 2022.06.03 - [Backend MLOps/Fastapi] - [Fastapi] asyncio 제대로 써보기 with pytest - 1 [Fastapi] asyncio 제대로 써보기 with pytest - 1 시작 이번 포스팅은 이론적으로 공부했던 비동기 처리의 요약을 포스팅한다. 다음 포스팅 부터 이 포스팅의 지식에 근거하여 실질적인 성능향상을 끌어내고 얼마나 성능이 향상되는지도 알아 davi06000.tistory.com io-job을 많이 쓰는 비동기 처리는 당연히 db처리라고 할 .. 2022. 6. 14.
Fastapi docs 무작정 따라하기 ORM 편 - 3 Main FastAPI app 이제 모든 파일을 통합해 보자. 나는 ./sql_app/main.py 로 만들지 않고 ./main.py 로 만들었다. 이렇게 하는 편이 다른 앱을 만들 때와 더 유사하다고 판단했기 때문이다. 우선 코드를 모두 적고 하나씩 분석해 보자. DB ionitialize 앞서 작성한 models.py에 있는 테이블들을 모두 생성한다. 그리고 그 모델들은 condition을 만족하는 engine에 연결된다. Dependency 서버에 여러 요청이 동시에 들어온다고 가정해보면 각각의 요청에 따라 DB의 로컬세션을 생성하고 요청에 맞는 작업을 수행 한 후 세션을 커밋하고 닫는 일련의 작업이 필요하다. 즉 어떤 메소드가 수행되기 전과 후에 DB를 열고 닫는 데코레이터같은 기능이 필요한데 이.. 2022. 6. 7.
Fastapi docs 무작정 따라하기 ORM 편 - 2 Create the Pydantic models 이전 포스팅에서 SQLAlchemy의 models를 구성하고 제작하는 방식을 알아보았다. 그리고 언급한 부분이 pydantic의 model과 sqlalchemy의 model이 다르므로 혼동해서는 안된다는 내용이었다. pydantic은 데이터 검증을 위해 사용하는 툴로 타입 힌트를 이용해 데이터의 타입을 명시하고 그에 맞지 않는 데이터가 발견되면 에러를 발생시켜 데이터의 형태를 강제하는 용도로 사용한다. api를 이용한 io 테스크가 많은 백엔드 작업시에 굉장히 유용한 툴이다. io 작업에서는 직렬화된 데이터를 주고 받는 작업이 대부분인데 pydantic은 이 직렬화된 데이터를 파싱해주는 툴이기 때문이다. 그래서 만약 파싱이 불가능한 데이터는 에러를 발생시키.. 2022. 6. 6.
Fastapi docs 무작정 따라하기 ORM 편 - 1 시작하기 Fastapi에서는 파이썬으로 제공되는 어떤 방식의 DB도 사용이 가능하다. DB는 서버에서 발생하는 io 작업이므로 서버 성능에 큰 영향을 주게 된다. 따라서 Fasapi의 공식 문서를 무작정 따라가면서 어떤 방식을 권장하는지 알아보자. 여기에 의존하여 작성된 문서임을 밝힌다. ORM 서버에서 DB를 사용하는 방법은 크게 두가지가 있다. 하나는 쿼리문을 직접 작성하여 DB로 날리는 방식이고 다른 하나는 DB의 Table에 mapping 할 수 있는 형태의 객체를 만들어서 관리하는 방식이다. 후자의 이름이 바로 ORM인데 지금까지 나는 쿼리를 직접 작성하는 방식에 익숙해 있어 ORM을 많이 활용하지 않았다. 하지만 비동기 처리나 컨테이너를 올리고 내리는 작업에서 쿼리를 직접 작성해 execute.. 2022. 6. 3.
[Fastapi] asyncio 제대로 써보기 with pytest - 1 시작 이번 포스팅은 이론적으로 공부했던 비동기 처리의 요약을 포스팅한다. 다음 포스팅 부터 이 포스팅의 지식에 근거하여 실질적인 성능향상을 끌어내고 얼마나 성능이 향상되는지도 알아보려고 한다. 최근 비동기를 활용하여 백엔드 프로젝트를 하나 진행한 적이 있다. 이전에 Go 관련 포스팅을 진행할 때 마지막엔 비동기 구현을 꼭 넣고자 했으나 이 프로젝트를 먼저 진행하게 되면서 파이썬의 async await을 먼저 포스팅 해보고자 한다. async는 파이썬의 네이티브 코루틴이 적용되는 함수를 생성하는 방법으로 비동기 함수 구현을 사용할 때 쉽고 간단하게 구현할 수 있도록 해준다. 동기? 비동기? 병렬? 우선은 비동기가 뭔지 정리하고 넘어가야겠다. 비슷한 것으로 병렬연산도 함께 정리하면 좋다. 내 언어로 정리해보.. 2022. 6. 3.
[DL Serving] FastAPI 튜토리얼 - 4 이번에는 Postgresql을 작동시키고 sqlalchemy를 이용해서 파이썬에 연동하고 그걸 fastapi로 확인하는 방식의 동작들을 수행해보자. 이단계에서 필요하다면 컨테이너를 빌드하고 소통하는 방식으로 진행해 볼 것이다. 우선 postgresql은 설치가 되어있는 상태다. main.py 가 있는 디렉토리와 같은 위치에 db 폴더를 따로 만들고 거기를 db로 지정해보도록 하겠다. db 의 권한을 777로 바꿔주고 그 아래에 postgres 라는 디렉토리를 생성 pg_ctl로 db를 시작해 주었다. 정상적으로 postgres 서버가 동작하는 모습 이때는 postgres의 관리 권한이 있는 계정으로 넘어가서 작업을 해 주어야한다. postgres 설치시에 자동으로 postgres라는 관리 계정이 생성되는.. 2021. 12. 6.
반응형