클라우드 네이티브 앱이란?
클라우드 네이티브 애플리케이션은 클라우드 환경의 특성(탄력성, 분산, 자동화)을 최대한 활용하도록 설계된 소프트웨어입니다. 정보처리기사 최신 트렌드에 포함되는 영역입니다.
12-Factor App 방법론
Heroku가 제안한 클라우드 네이티브 앱 설계 12가지 원칙입니다.
- 1. 코드베이스: 하나의 코드베이스, 여러 환경(dev/staging/prod) 배포
- 2. 의존성: 명시적으로 선언·격리 (requirements.txt, package.json)
- 3. 설정: 환경 변수로 관리 (코드에 하드코딩 금지)
- 4. 백엔드 서비스: 연결 가능한 리소스로 취급 (DB, 캐시, 메시지큐)
- 5. 빌드·릴리스·실행: 단계를 엄격히 분리
- 6. 프로세스: 무상태(Stateless) 프로세스로 실행
- 7. 포트 바인딩: 포트 바인딩으로 서비스 노출
- 8. 동시성: 프로세스 모델로 스케일 아웃
- 9. 폐기 가능성: 빠른 시작과 우아한 종료
- 10. 개발/운영 일치: 개발·스테이징·운영 환경을 최대한 유사하게
- 11. 로그: 이벤트 스트림으로 취급. stdout에 출력, 수집은 인프라 역할
- 12. 관리 프로세스: 일회성 관리 작업은 별도 프로세스로 실행
서버리스(Serverless) 아키텍처
서버 관리 없이 코드만 작성하면 클라우드가 인프라를 자동 관리하는 실행 모델입니다.
서버리스 특징
- 사용한 실행 시간·횟수만큼만 과금
- 자동 스케일링 (0에서 수천 인스턴스)
- 서버 패치·관리 불필요
- 이벤트 드리븐(Event-driven) 실행
콜드 스타트(Cold Start)
처음 실행 시 컨테이너 초기화로 인한 지연. 저지연이 중요한 서비스에 주의
FaaS (Function as a Service)
함수 단위로 코드를 배포·실행하는 서버리스 컴퓨팅 모델입니다.
- AWS Lambda: 이벤트(S3 업로드, API 호출, DynamoDB 변경 등)로 트리거
- Azure Functions: HTTP, Timer, 큐 메시지 등으로 트리거
- Google Cloud Functions: GCP 이벤트 연동
FaaS 제약사항
- 실행 시간 제한 (AWS Lambda: 최대 15분)
- 로컬 파일 시스템 일시적 저장만 가능
- 상태 유지 불가 (외부 저장소 사용 필요)
이벤트 드리븐 아키텍처
- 이벤트 발행자(Producer) → 이벤트 브로커(Kafka, SQS, SNS) → 이벤트 소비자(Consumer)
- 느슨한 결합: 발행자와 소비자가 직접 통신하지 않음
- 비동기 처리: 응답 대기 없이 다음 작업 진행
시험 핵심 포인트
- 12-Factor 3번: 설정은 환경 변수로 (코드에 자격증명 하드코딩 금지)
- 12-Factor 6번: 무상태 프로세스 (세션을 외부 저장소에)
- 서버리스: 서버 관리 불필요, 이벤트 트리거, 사용량 과금
- FaaS 콜드 스타트: 최초 실행 지연
- 이벤트 드리븐: 느슨한 결합, 비동기 처리
마무리
클라우드 네이티브는 현대 소프트웨어 개발의 방향입니다. 12-Factor App의 핵심 원칙과 서버리스의 특징·제약사항을 중심으로 학습하세요.