SQLAlchemy read-only session
·
탐구 생활/개발 탐구
SQLAlchemy 도 Spring의 Transaction 처럼 read-only 를 만드는 기능이 있는지 물어보는 질문이 있었습니다. 이 글의 답변에도 작성했지만, 저도 SpringBoot 를 사용할때는 Transaction 격리수준, 전파수준 등을 엄청 신경썼었는데 FastAPI&SQLAlchemy 를 사용하면서 한번도 이런 고민을 안했습니다.이게 개별 비즈니스 로직을 간단하게 유지할 수밖에 없는 프레임워크의 장점아닌 장점이라고 생각하면서 SQLAlchemy 에서 read-only transaction 을 만드는 방법을 알아보았습니다.  Does SQLAlchemy automatically create a transaction for read-only operations?I am currently l..
티스토리 스킨 hELLO 에 기여해보기
·
탐구 생활/개발 탐구
이전에 FatAPI 의 문서 번역에 기여한것에 이어서 FastAPI 의 공식문서에 내용을 변경하는 등 기여를 하고 있는중이다. 오픈소스 초보자의 FastAPI 기여하기회사에서 FastAPI 로 전환을 하기에 FastAPI Document 를 보면서 공부중이었다. 한국어로 번역된 문서도 있는반면 영어 그대로인 문서들도 있었다. 왜일까? 하고 찾아보던중 FastAPI Github 에서 번역활동probehub.tistory.com   FastAPI 에서 기여하는 흐름은 이런식이다.[Fork 를 한다] -> [적절한 이름의 Branch 를 만든다] -> [변경하고자하는 사항을 변경하고 PR을 올린다] -> [리뷰를 받는다] -> [머지 혹은 리젝된다] 하지만 이번에 티스토리 hELLO 에 기여했던 흐름은 전혀 ..
FastAPI & Postgres 로 multi-tenancy 구현하기
·
탐구 생활/개발 탐구
stackoverflow 를 돌아다니다가 "FastAPI multi-tenant 를 구현하는데 경쟁조건이 발생한다" 는 내용의 질문을 발견했습니다. 회사에서 FastAPI 에서 PostgreSQL 의 schema 단위로 tenant 를 구분하여 DB 에 연결하는 기능을 구현했는데, 생각보다 여기서 어려움을 겪는 사람이 있는것 같아서 내용을 정리해봤습니다.문제 분석우선 저는 질문자가 구현한 middleware 를 살펴봤습니다. 큰 흐름은 다음과 같습니다.ContextVar 를 이용한다.Request 가 있을때마다 SessionLocal 에서 session 을 얻어온다.얻어온 session 에서 switch schema 를 실행하고 request.state 에 db 라는 이름으로 넘겨준다.일단 주어진 코드로..
테이블 파티셔닝 적용기
·
탐구 생활/개발 탐구
왜 DB 테이블 파티셔닝을 도입했나프롭테크 회사에서 부동산 중개사들이 사용하는 솔루션, 내부 부동산 투자 개발팀이 사용하는 솔루션을 만들고 운영주입니다. 이러한 솔루션을 위해 부동산 공공데이터 베이스를 구축, 운영중인데 아직 경험이 부족하여 더 나은 서비스를 제공하기 위해 DB 에 대해 공부하고 있습니다. 고작  1+a 년동안 부동산 데이터를 다룬 제가 파악한 특성은 (1) 데이터 양(Volume)이 많다, (2) 그렇게 양이 많은 데이터가 다양하다는 점입니다.얼핏보면 빅데이터의 3V(Volume, Velocty,  Variety) 가 생각나는 특징이죠? 하지만 엄연히 말하자면 다릅니다. 양이 많은 것은 맞지만 TB 단위로 많은 것은 또 아니고, 다양하지만 데이터의 형태(정형, 반정형, 비정형) 가 다양..
Java, SpringBoot 에서 Geometry 좌표 핸들링
·
탐구 생활/개발 탐구
프롭테크 회사를 다니다보니 지도 서비스를 자주 다룹니다.당연히 클라이언트 개발자가 지도 서비스를 더 많이 다루고 고생하는 분야이지만 필지, 행정동, 법정동의 모양정보(이하 공간데이터)를 뿌려주는 역할은 백엔드에서도 해야할 일이 있습니다. 백엔드 개발자라면 공간데이터 타입을 어떻게 DB 에 보관할지 궁금하는지, 내부 처리 성능은 어떠한지 궁금할 것입니다.이것 역시 다루고 싶은 주제지만 이 글에서는 공간데이터를 지도에 뿌리는 정도가 관심사이기 때문에 어떻게 보관하든 큰 문제는 아니겠죠.  Geometry 정보를 전달하는 방식그렇다면 DBMS 에 보관된 공간데이터를 어떤식으로 뿌릴까를 이야기해보겠습니다.여러 부동산 서비스의 클라이언트-서버 통신을 분석해보면 공간데이터를 뿌리는 방식은 크게 두가지로 나뉘는것 같..
AWS AutoScaling 수평 확장시 어플리케이션 자동 세팅
·
탐구 생활/개발 탐구
아직 백엔드 인프라쪽에 전문성이 높지 않아서 여러가지 시도를 해보고 있습니다. 그 중에서도 항상 저에게 의문을 던져주었던 AWS 의 오토스케일링 그룹을 가지고 놀아보고자합니다. 저에게 주어진 주된 의문은 (1) 트래픽이 증가해서 자동으로 인스턴스가 늘어나면 그 안에 서버도 복제되는가? (2) 서버가 복제된다면 포트포워딩, 라우팅 설정도 알아서 자동으로 되나? 아래와 같이 간단한 환경을 만들고 테스트를 해봤습니다. 직접 실험해본 결과 이 질문에 대한 대답은 "아니다" 였습니다. (1) 트래픽이 증가해서 자동으로 인스턴스가 늘어나면 그 안에 서버도 복제되는가? -> 시작템플릿에서 지정된 백지상태의 EC2 가 하나더 만들어진다. (2) 서버가 복제된다면 포트포워딩, 라우팅 설정도 알아서 자동으로 되나? -> ..