반응형
도커(Docker) 사용 이점
1. 환경 격리 (Isolation)
- 컨테이너마다 독립된 환경을 가짐 → DB, 웹앱, 캐시가 서로 충돌 안 함.
- 예: 웹앱은 Node.js 20, DB는 Postgres 16 → 한 서버 안에서 다른 버전 충돌 없이 공존 가능.
- OS 레벨 패키지 충돌(라이브러리, 포트 점유 등) 문제 방지.
2. 배포와 복구가 단순
- 앱 배포 = docker pull + docker run → 코드 빌드/설치 과정 없이 바로 실행.
- 장애 시: docker restart db → DB만 재시작, 웹서비스는 그대로 유지.
- 특정 서비스 교체 가능: 예를 들어 MariaDB → Postgres 전환 테스트 시 컨테이너만 바꿔 띄워도 됨.
3. 자원 관리 쉬움
- 컨테이너별 CPU/메모리 제한 설정 가능 (cpus: "0.5", memory: 512M).
- DB는 4GB 메모리, 웹앱은 512MB 이런 식으로 배분 → 한 서비스가 폭주해도 다른 서비스 영향 최소화.
- 필요하면 scale-out: 웹앱 컨테이너를 1개에서 3개로 늘려 부하 분산.
4. 이동성 (Portability)
- “한 번 빌드하면 어디서든 실행” (개발용 노트북, 테스트 서버, 운영 서버 동일).
- 개발/테스트/운영 환경 차이 줄어듦 → “내 로컬에서는 잘 되는데…” 문제 감소.
5. 보안 강화
- 서비스별 격리 → DB 컨테이너에는 3306포트만 내부 네트워크로 열어두고 외부에서는 접근 불가.
- 웹앱 컨테이너만 외부 80/443 포트 노출 → 공격 표면 축소.
- 필요 시 read-only filesystem 옵션으로 쓰기 권한 최소화.
6. 로그·모니터링 관리 용이
- 컨테이너 단위 로그 → docker logs web1, docker logs db.
- 중앙 로깅/모니터링(cAdvisor, Prometheus, Grafana)과 쉽게 통합 가능.
7. 업데이트/롤백 용이
- 웹앱 새 버전 배포: docker-compose up -d web1 → 기존 컨테이너 내려가고 새 컨테이너 올라옴.
- 문제가 있으면 docker-compose rollback으로 바로 이전 버전 복귀.
8. 운영 안정성
- DB에 문제가 생겨도 웹앱 컨테이너는 살아있음 → 영향 범위 최소화.
- 특정 서비스만 모니터링/재시작 가능 (restart: unless-stopped).
✅ 정리
DB와 웹서비스를 컨테이너로 분리하면
- 충돌 없는 환경 격리
- 빠른 배포와 쉬운 복구
- 자원 제한과 부하 분산
- 어디서든 실행 가능한 이동성
- 보안 강화와 운영 안정성
- 업데이트와 롤백의 유연성
을 얻을 수 있습니다.
docker 설치 : https://rhgustmfrh.tistory.com/246
반응형
'개발 · IT > 시스템 · 인프라' 카테고리의 다른 글
| PostgreSQL 설정 완벽 가이드: pg_hba.conf 및 postgresql.conf 기본 설정과 최적화 방법 (0) | 2023.07.13 |
|---|---|
| PostgreSQL 입문 가이드: 간단한 설치 및 탐색 방법 (3) | 2023.07.13 |
| 형상관리 툴 git을 설치하고 사용해보자 (0) | 2023.03.13 |
| 도커를 활용한 Python Flask 프로젝트 예제: MySQL 연동 및 Docker Compose로 간편한 구성 관리 (2) (0) | 2023.02.20 |
| 도커를 활용한 Spring Boot 프로젝트 예제: PostgreSQL 연동과 데이터 관리 방법 (1) (0) | 2023.02.20 |
댓글