데이터베이스 (수정중)
목표 데이터베이스가 무엇이고, 왜 코드와 분리돼 있으며, 환경마다 왜 따로 두는지 이해한다.
앞 강의에서 설정이 '어떤 데이터베이스에 연결할지'를 정한다고 했습니다. 그 데이터베이스가 무엇인지 이번에 봅니다.
1. 데이터베이스란?
데이터베이스(DB) 는 서비스의 데이터를 영구히 담아 두는 곳입니다. 회원 정보, 주문 내역, 회의록처럼 오래 남아야 하는 값이 전부 여기에 저장됩니다.
앱(코드)이 "이 사용자의 회의록을 보여 줘" 같은 일을 하려면, 그 데이터를 데이터베이스에 물어봐서 꺼내 옵니다.
2. 코드와 데이터 분리
가장 중요한 개념 하나입니다. 코드와 데이터는 따로 있습니다.
- 코드(앱): 배포할 때마다 새 버전으로 통째로 갈아 끼웁니다.
- 데이터(DB): 그 자리에 그대로 쌓여 남습니다.
그래서 새 버전을 배포해도 회원·주문 같은 데이터는 날아가지 않습니다. 코드는 갈아 끼우는 부품, 데이터는 계속 쌓이는 저장소라고 보면 됩니다.
3. 프로젝트·환경마다 따로 두는 DB
데이터베이스는 프로젝트마다 하나씩 따로 둡니다. 그리고 앞 '개발환경과 운영환경' 강의에서 봤듯, dev·prod 도 각자 자기 데이터베이스를 가집니다.
그래서 dev 에서 만든 시험용 데이터는 prod 고객에게 보이지 않고, 그 반대도 마찬가지입니다. "dev 엔 있는데 prod 엔 없다"가 생기는 이유이기도 합니다.
4. PostgreSQL
데이터베이스에도 종류가 여럿 있습니다(PostgreSQL, MySQL 등). 우리 프로젝트는 PostgreSQL 을 씁니다. 지금은 "우리 데이터는 PostgreSQL 이라는 데이터베이스에 저장된다" 정도만 알면 됩니다. 실제로 데이터를 들여다보거나 다루는 방법은 실습에서 익힙니다.
마무리
- 핵심 정리: 데이터베이스는 서비스의 데이터를 영구 보관하는 곳입니다. 코드와 데이터는 분리돼 있어 배포로 코드를 갈아 끼워도 데이터는 남습니다. 데이터베이스는 프로젝트마다, 그리고 dev·prod 환경마다 따로 둡니다. 우리는 PostgreSQL 을 씁니다.
- 주의 사항: "저장했는데 안 보인다" 싶으면, dev 데이터베이스에 저장해 놓고 prod 를 보고 있는(또는 그 반대) 경우가 많습니다.
- 다음 시간: 주소를 입력하면 요청이 우리 서버에 닿기까지의 흐름을 살펴봅니다.