다양한 클라우드 서비스 유형과 Docker
IaaS (Infrastructure as a Service)
- 가상 서버, 스토리지, 네트워크 등 기본적인 컴퓨팅 인프라를 제공하는 서비스
- Amazon EC2가 대표적인 예시
IaaS의 특징
- 사용자가 직접 OS, 미들웨어, 런타임, 애플리케이션을 설치하고 관리
- 더 많은 통제권과 유연성 제공
- 관리 책임이 큼 (OS 업데이트, 보안 패치, 런타임 환경 설정 등)
IaaS 배포 프로세스 예시
- EC2, RDS 서버 연결
- JPA로 테이블 생성
- React 서버 실행
- 연결 확인 후 tar 압축파일 생성
- 애플리케이션 실행에 필요한 플랫폼을 제공하는 서비스
- AWS Elastic Beanstalk이 대표적인 예시
PaaS의 특징
- OS, 미들웨어, 런타임 환경을 서비스 제공자가 관리
- 개발과 배포에 더 집중 가능
- 코드 업로드만으로 배포 가능
- 자동 스케일링과 로드 밸런싱 제공
- 환경 관리 자동화
Docker: 컨테이너화 플랫폼
- 애플리케이션을 "컨테이너"라는 표준화된 단위로 패키징하는 플랫폼
Docker 컨테이너란?
- 컨테이너는 애플리케이션과 그것을 실행하는데 필요한 모든 의존성(라이브러리, 설정 등)을 하나의 패키지로 묶은 것
- 마치 선박 컨테이너처럼 표준화된 방식으로 어디서든 실행이 가능
Docker의 장점
- 환경 일관성: "내 컴퓨터에서는 작동했는데..." 문제 해결
- 격리성: 각 애플리케이션이 독립된 환경에서 실행
- 이식성: 개발/테스트/운영 환경 간 쉬운 이동
- 자원 효율성: VM보다 가벼운 구조
Docker 사용 예시
Spring Boot 애플리케이션을 위한 Dockerfile 예시:
FROM openjdk:17
COPY target/FITPLE-1.0.0.jar app.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","/app.jar"]
Docker와 클라우드 서비스의 관계
- Docker 자체는 IaaS나 PaaS로 직접 분류되지 않으며, 사용 방식에 따라 다르게 활용될 수 있음
IaaS 방식
- EC2에 Docker를 직접 설치하고 관리
- 더 많은 통제권과 책임
- 직접적인 Docker 설치, 관리, 운영 필요
PaaS 방식
- AWS ECS, EKS와 같은 관리형 컨테이너 서비스 사용
- AWS가 Docker 실행 환경을 관리
- 컨테이너 이미지만 제공하면 됨
IaaS: 빈 아파트를 받아서 직접 가구를 놓고 꾸미는 것
PaaS: 풀옵션 원룸처럼 다 갖춰진 환경을 받는 것
Docker: 가구나 살림살이를 표준화된 상자에 담아서 쉽게 옮길 수 있게 해주는 포장 기술