보통 내가 선호하는 백엔드 스택은 다음과 같다
기본적으로 파이썬을 사용하고
Web Framework : Django
WAS : Gunicorn
WEB : Nginx
DB : Postgresql
뭐 여기에서 CI/CD, Docker, Lambda, EC2 등 데브옵스와 같은 분야도 들어갈 수 있겠지만 기본적으로 위 4가지를 통해 백엔드 구성이 돌아가게 된다. 여기서는 PostgreSQL에 대해서 알아본다.
어떤 경우에는 이렇게 생각할 수도 있을 것이다. 아니 어차피 Django에서 ORM으로 쿼리 요청해서 API를 구현할건데 굳이 PostgreSQL에 대해서 알고 사용해야하나?
중요한 비즈니스 로직에 걸리는 문제가 아니면 사실 굳이 사실 다른 DBMS와 엄청나게 큰 차이가 없는 것은 사실이다. 그런데도 굳이 PostgreSQL을 선택해서 백엔드 스택으로 채용해서 사용한다면 어떤 부분들이 다른 DBMS와 차이점이 존재하는지, 내가 사용하는 기능들이 적어도 어떤 방식으로 구현되어 있는지는 알아야 하지 않겠는가? 그리고 한번 알아두면 다른 DBMS에도 공통적으로 적용되는 이야기가 대부분이므로 한번쯤 정리하고 지나가면 좋을듯하다.
우선 내가 Postgres를 쓰는 이유는 다음과 같다.
원래는 ArrayField 한번만 써보려다 PostgreSQL 위주로 사용하게 되었는데 Django도 계속 사용하는걸 보면 인연인가..?