728x90
서버
서버리스 아키텍처
- 서버리스(Serverless) 아키텍처는 애플리케이션 개발자가 서버를 직접 관리하지 않고, 클라우드 제공자가 백엔드 인프라를 동적으로 관리하는 아키텍처를 말한다. 개발자는 애플리케이션의 로직과 기능에만 집중하고, 서버 프로비저닝, 유지보수, 확장 등은 클라우드 제공자가 처리한다.
특징
- No Server Management(서버 관리 불필요)
- 개발자는 물리적 서버, 가상 서버, 운영체제 관리에 신경 쓰지 않는다.
- 클라우드 제공자가 서버를 자동으로 관리한다.
- 이벤트 기반 실행
- 서버리스 함수(예: AWS Lambda)는 특정 이벤트가 발생할 때만 실행된다.
- 사용자가 요청을 보내거나 특정 조건이 충족될 때만 리소스를 사용한다.
- 자동 확장
- 트래픽에 따라 클라우드 제공자가 애플리케이션을 자동으로 확장하거나 축소한다.
- 과도한 트래픽에서도 안정적으로 동작할 수 있다.
- 비용 효율성
- 사용한 만큼만 요금을 지불한다.(Pay-as-you-go)
- 애플리케이션이 실행되지 않을 때는 비용이 발생하지 않는다.
장점
- 운영 비용 감소
- 서버 유지보수와 모니터링 인력을 줄일 수 있다.
- 인프라 운영 비용도 절감된다.
- 빠른 개발
- 인프라를 설계하거나 설정할 필요 없이 애플리케이션 개발에만 집중할 수 있다.
- 더 짧은 개발 주기로 애플리케이션을 배포할 수 있다.
- 확장성
- 클라우드 제공자가 트래픽 증가에 따라 애플리케이션을 자동으로 확장한다.
- 높은 가용성
- 클라우드 제공자는 애플리케이션이 다운되지 않도록 자동으로 관리한다.
단점
- 종속성 문제(Vendor Lock-In)
- 특정 클라우드 서비스(AWS Lambda, Azure Functions 등)에 종속될 수 있다.
- 다른 플랫폼으로 이전이 어려워질 수 있다.
- 성능 이슈(Cold Start)
- 함수가 실행되기 전, 서버가 초기화되는 데 시간이 걸릴 수 있다.
- 특히 서버리스 함수가 오랫동안 실행되지 않았을 때 성능 저하가 발생할 수 있다.
- 디버깅 및 모니터링 어려움
- 서버리스 환경에서는 디버깅과 로깅이 제한적일 수 있다.
- 서버 로그에 직접 접근할 수 없기 떄문에 문제를 추적하기가 어렵다.
- 복잡한 애플리케이션 관리
- 마이크로서비스 기반의 서버리스 환경은 많은 함수로 구성되기 때문에 관리가 복잡해질 수 있다.
AWS
CodeDeploy
- 애플리케이션을 다양한 컴퓨팅 서비스에 자동으로 배포할 수 있도록 지원하는 자동화 배포 서비스이다. CodeDeploy를 사용하면 애플리케이션 배포 프로세스를 효율적으로 관리하고, 오류를 줄이며, 중단 없는 배포(Zero Downtime Deployment)를 구현할 수 있다.
주요 기능
- 자동화된 배포
- 코드 업데이트와 애플리케이션 배포를 자동화하여 인적 오류를 줄인다.
- 다양한 배포 대상
- EC2 인스턴스, 온프레미스 서버, AWS Lambda 함수, Amazon ECS 클러스터 등 다양한 환경에 배포를 지원한다.
- 배포 전략
- In-place Deployment: 기존 인스턴스에서 애플리케이션을 업데이트한다.
- Blue/Green Deployment : 새 환경에 애플리케이션을 배포하고, 모든 것이 정상임을 확인한 후 트래픽을 전환한다.
- Custom Deployment Hooks
- 배포 중에 특정 스크립트를 실행할 수 있는 기능을 제공한다.
- 중단 없는 배포(Zero Downtime)
- Blue/Green 배포를 통해 애플리케이션 업데이트 중에도 사용자는 서비스를 계속 이용할 수 있다.
- 통합 모니터링
- Amazon CloudWatch, AWS CloudTrail 등과 통합하여 배포 상태를 모니터링하고 문제를 추적할 수 있다.
주요 구성 요소
- 애플리케이션
- CodeDeploy에서 배포를 관리하는 논리적 그룹이다.
- 배포 그룹(Deployment Groups)
- 배포가 이루어질 EC2 인스턴스나 Lambda 함수의 논리적 집합이다.
- 태그나 Auto Scailing 그룹을 기준으로 대상 정의가 가능하다.
- 배포 설정(Deployment Configurations)
- 배포 방법을 정의한다.
- AppSpec 파일
- 배포 프로세스를 정의하는 파일이다.
- 애플리케이션의 소스 파일 위치, 배포 후 실행할 스크립트 등을 지정한다.
배포 프로세스
- 소스 준비
- CodeDeploy는 소스 코드를 AWS S3 버킷 또는 GitHub에서 가져온다.
- 배포 대상 정의
- 배포할 대상 인스턴스나 Lambda 함수를 설정한다.
- 배포 수행
- 지정된 AppSpec 파일에 따라 애플리케이션을 배포한다.
- 배포 전후에 스크립트를 실행할 수 있다.
- 검증 및 완료
- ClodeWatch Logs를 사용하여 배포 상태를 검증하고, 문제가 없으면 배포를 완료한다.
장점
- 배포 자동화
- 다양한 통합
- 유연한 배포 전략
- 중단없는 배포
단점
- 복잡성 증가
- 비용
- 학습 곡선
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.11.29 C++ (0) | 2024.11.29 |
---|---|
24.11.28 면접 후기 (1) | 2024.11.28 |
24.11.26 C++, 책 (0) | 2024.11.26 |
24.11.25 CS, C++ (0) | 2024.11.25 |
24.11.24 C++ (0) | 2024.11.24 |