본문 바로가기

전체 글134

DevOps Day 32 (4.19) AWS_컨테이너 배포 Amazon ECS/ECR 마이크로서비스 아키텍쳐 : 마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식입니다. 마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축할 수 있게 해 줍니다. 모놀리식 아키텍처 vs 마이크로서비스 아키텍처 모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행됩니다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 합니다. 그래서 새로운 아이디어를 구현하기가 어려워지고 긴밀하게 결합된 프로세스로 인해 단일 프로세스의 실패로 인한.. 2023. 5. 16.
Devops Day 48 (5.12) Infrastructure as Code IaC의 의미와 필요성 다음을 가정해 봅시다 - 위 그림에서의 인프라를 완전히 다른 리전에 똑같이 복제하고 싶을 경우 - 특히, 해당 리전이 갑자기 사용할 수 없는 상황에 직면했을 경우 - 기존과는 다른 새로운 아키텍처를 빠른 시간 내에서 적용해야 할 경우 수동 설정의 한계 수동설정은 쉽게 서비스를 제공하고, 아키텍처를 빠르게 실험해 볼 수 있다는 점에서 유리하지만, 많은 단점도 가지고 있습니다. - 휴먼 에러 때문에 서비스를 설정할 때에 잘못 설정하기 쉽습니다 - 설정을 통해 예측되는 상태를 관리하기 어렵습니다 - 환경 설정에 대한 내용을 다른 팀 멤버에 전달하기 어렵습니다 IaC : 코드형 인프라(Infrastructure as Code), 즉 IaC는 설정을 코드로 작성하여 클라우드 인프라스트럭처의.. 2023. 5. 16.
Devops Day 45 (5.9) 마이크로서비스 작성_Sprint API Gateway와 서버리스 애플리케이션 Bare Minimum Requirement : · 다음 아키텍처로 구성된 서버리스 애플리케이션을 배포합니다. o API Gateway - Lambda - DynamoDB · 직접 API Gateway로 실행해 봅니다. · API Gateway의 인증 기능을 이용해서, HTTP 요청에 특정 API Key를 사용하는 예제를 다음 두 가지 방법으로 구현합니다. 1. API Key 2. 권한 부여자 · CloudWatch Logs를 통해서 API 호출을 모니터링할 수 있어야 합니다. Step 1 : API Gateway - Lambda 배포 Instruction 1. Lambda 함수와 API gateway 세팅 위한 SAM 작성 - https://serverlessland.com/patterns/lambda.. 2023. 5. 10.
Devops Day 45 (5.9) 마이크로서비스 작성_마이크로서비스 배포 툴 SAM Hands-on Lambda 함수를 배포하는 방법 : Lambda는 컨테이너 이미지 및 .zip 파일 아카이브의 두 가지 배포 패키지를 지원합니다. 1. .zip 파일 아카이브로 정의된 Lambda 함수 생성 - Lambda 콘솔과 Lambda API를 사용하여 .zip 파일 아카이브로 정의된 함수를 만들 수 있습니다. 업데이트된 .zip 파일을 업로드하여 함수 코드를 변경할 수도 있습니다. - 콘솔을 통해 직접 코드를 작성하는 것도 가능합니다. 2. 컨테이너 이미지 - FROM amazon/aws-lambda-nodejs:12와 같이 주어진 이미지 위에 애플리케이션을 올린 후 빌드하여 배포할 수 있습니다. AWS에서 제시하는 애플리케이션 모델 Lambda 콘솔을 통해 직접 애플리케이션을 개발하는.. 2023. 5. 10.
Devops Day 45 (5.9) 마이크로서비스 작성_독립적인 서비스 구성 AWS Lambda : Lambda는 AWS가 제공하는 서버리스 FaaS 솔루션으로, 함수의 인스턴스를 실행하여 이벤트를 처리합니다. FAAS : - FaaS는 자체 서버 시스템이나 수명이 긴 서버 애플리케이션을 관리하지 않고 백엔드 코드를 실행하는 것 - FaaS는 런타임(node.js, Java 등)에 대한 사전 준비가 필요하지 않음 - FaaS 기능에는 특히 상태 및 실행 기간과 관련하여 상당한 아키텍처 제한이 있음 - 수평적 확장은 완전 자동이며 탄력적이며 공급자가 관리함 - FaaS의 기능은 일반적으로 공급자가 정의한 이벤트 유형에 의해 트리거됨 - HTTP 요청에 대한 응답으로 트리거되도록 만들 수 있음 특징 : - 서버를 프로비저닝하거나 관리할 필요 없이 작성한 코드를 백엔드 서비스로서 배포.. 2023. 5. 10.
Devops Day 44 (5.8) 마이크로서비스_CQRS CQRS CQRS는 Command Query Responsibility Segregation(명령과 조회의 책임 분리)의 약자로 이름처럼 명령을 처리하는 책임과 조회를 처리하는 책임을 분리하는 것이 CQRS의 핵심입니다. CQRS는 초기 CQS에서 시작되어 확장되었습니다. CQS는 Command Query Separation의 약자로 시스템에서 처리되는 명령과 조회, 이 두 작업을 정의하는 핵심 개념이자, 이 둘을 분리시키는 디자인 패턴입니다. 기존에 하나의 데이터 저장소에 CRUD 작업을 모두 처리했다면, CQRS는 요청을 크게 명령(Create, Update, Delete)과 조회(Read)로 나누어 처리합니다. 명령과 조회를 각각 분리하면 명령(쓰기) 요청의 부하를 줄이고, 조회 대기 시간을 줄이는.. 2023. 5. 9.