전체 215

[0510] (페어) 마이크로서비스 작성 - API Gateway와 서버리스 애플리케이션

Bare Minimum Requirement 다음 아키텍처로 구성된 서버리스 애플리케이션을 배포합니다. API Gateway - Lambda - DynamoDB 직접 API Gateway로 실행해 봅니다. API Gateway의 인증 기능을 이용해서, HTTP 요청에 특정 API Key를 사용하는 예제를 다음 두 가지 방법으로 구현합니다. API Key 권한 부여자 CloudWatch Logs를 통해서 API 호출을 모니터링할 수 있어야 합니다. 트러블슈팅: Eooro: Unable to upload artifact HelloWolrdFunction referenced by CodeUri parameter of HelloWorldFunction resource. S3 bycket does not exis..

Code States/TIL 2023.05.10

[0509] 마이크로서비스 작성 - 마이크로서비스 배포 툴 (SAM 실습)

학습 목표 대표적인 FaaS 서비스인 AWS Lambda의 사용법을 이해할 수 있다. Lambda를 실행하는 다양한 트리거의 종류를 확인할 수 있다. Lambda의 작동 로그를 CloudWatch Logs를 통해 확인할 수 있다. Lambda의 작동원리를 이해할 수 있다. (advanced) API Gateway를 통해 Lambda를 실행할 수 있다. API Gateway에 API 키 및 Authorizer로 액세스 제어를 적용할 수 있다. HTTP 메서드별 라우팅을 적용할 수 있다. 새로운 릴리스/다양한 Stage의 API를 배포할 수 있다. SAM을 이용해 제공되는 다양한 마이크로서비스 애플리케이션을 배포할 수 있다. AWS SAM cli 설치 AWS cli가 설치되어 있는 상태에서 homebrew를..

Code States/TIL 2023.05.09

[0509] 마이크로서비스 작성 - 독립적인 서비스 구성

학습 목표 대표적인 FaaS 서비스인 AWS Lambda의 사용법을 이해할 수 있다. Lambda를 실행하는 다양한 트리거의 종류를 확인할 수 있다. Lambda의 작동 로그를 CloudWatch Logs를 통해 확인할 수 있다. Lambda의 작동원리를 이해할 수 있다. (advanced) API Gateway를 통해 Lambda를 실행할 수 있다. API Gateway에 API 키 및 Authorizer로 액세스 제어를 적용할 수 있다. HTTP 메서드별 라우팅을 적용할 수 있다. 새로운 릴리스/다양한 Stage의 API를 배포할 수 있다. SAM을 이용해 제공되는 다양한 마이크로서비스 애플리케이션을 배포할 수 있다. AWS Lambda AWS가 제공하는 서버리스 FaaS 솔루션 함수의 인스턴스를 실..

Code States/TIL 2023.05.09

[0508] 마이크로서비스 - CQRS

Command Query Responsibility Segregation, 명령과 조회의 책임 분리 초기 CQS(Command Query Separation)에서 시작되어 확장됨 시스템에서 처리되는 명령과 조회, 이 두 작업을 정의하는 핵심 개념이자, 이 둘을 분리시키는 디자인 패턴 명령: 상태를 변경하는 작업 조회: 상태를 반환하는 작업 마이크로서비스의 핵심은 서비스별 데이터 저장소를 각기 다르게 채택한다는 점 서비스 성능 향상을 위해 인스턴스를 스케일 아웃하여 여러 개로 실행할 경우 빈번한 명령과 조회 작업으로 리소스 교착 상태가 발생할 수 있음 통상적으로 명령보다 조회 요청이 훨씬 많이 사용되기 때문에, 하나의 서비스 내에 이러한 모든 기능을 넣어두면 조회 요청 빈도가 증가함에 따라 명령 기능도 함..

Code States/TIL 2023.05.08

[0508] 마이크로서비스 - API 디자인과 프로세스 간 통신

프로세스 간의 통신 서비스와 서비스가 서로 통신하기 위해서는 인터페이스가 존재해야 하고, 인터페이스가 요구하는 방식대로 커뮤니케이션 해야 함 API(Application Programing Interface): HTTP 위에서 작동하는 메서드와 엔드포인트로 구성된 인터페이스를 이용한 통신 동기/비동기 동기적 방법 요청을 보내는 즉시 수신자로부터 응답이 오길 기대 클라이언트-서버 아키텍처의 REST(HTTP)가 대표적 HTTP 프로토콜은 기본적으로 TCP/UDP 연결을 만들고, 이 위에서 요청에 따라 즉시 응답이 오는 형태로 구현되어 있음 → 즉 동기적인 응답을 제공함 비동기적 방법 요청을 일단 보내놓고 수신자가 받을 때까지 보관했다가 처리 수신자가 받기 전에 누군가는 메시지를 보관해놓아야 함 → 메시지 ..

Code States/TIL 2023.05.08

[0504] (페어) 마이크로서비스 - 도메인 주도 설계 실습

업무 개요 중앙방역대책본부에는 다양한 팀(DDD의 관점에서는 Actor)이 있지만, 대중에게 가장 잘 알려진 다음의 네 팀의 업무만을 이해해 보도록 합시다. 💡 주의: 이하 안내하는 코로나19 대응 지침은 정부 자료를 바탕으로 한 가상의 약식 운영 지침입니다. 따라서, 현재 운영 중인 정부의 지침과는 다를 수 있습니다. 이 안내를 실제 코로나19 대응 지침으로 오해하거나 적용하지 마세요. 환자관리팀 재택치료제도를 통해 환자를 치료해야 합니다. 환자가 n일 이후에 격리해제 기준에 부합하는지 확인해야 합니다. 무증상이고, 호전되는 경우 격리 해제가 가능합니다. 유증상이고, 증상이 호전되지 않을 경우 PCR 검사를 다시 진행해야 합니다. 역학조사팀 전자출입명부 및 카드 승인 내역을 기반으로 확진자의 동선을 조..

Code States/TIL 2023.05.04

[0504] 마이크로서비스 - 도메인 주도 설계

도메인 지식 어떤 산업 또는 분야를 이해하기 위한 지식 도메인 지식, 영향력, 활동 영역 개발 분야에서는 소프트웨어로 해결하려는 문제의 영역을 의미 객체 지향 프로그래밍에서는 도메인이 클래스(상태(property), 동작(method)을 가지는 객체)로 표현됨 도메인 주도 설계(Domain Driven Design) 하나의 도메인 모델에 대한 이해관계가 각자 다름을 인정 각 팀에 적합한 하위 도메인(주문, 배달, 결제 등)을 설정 해당 하위 도메인에 대한 맥락을 알고 있는 사람이 따라야 할 비즈니스 규칙에 대한 경계를 설정 예시: 주문 결제팀 주문이란 “결제”다 상태 : status, orderTotal, transction 동작: pay(), cancel() 배달팀 주문이란 “배달”이다 상태: stat..

Code States/TIL 2023.05.04

[0503] 마이크로서비스 - 마이크로서비스 구조와 특징

마이크로서비스 아키텍처의 정의 유지보수에 유리하고, 테스트가 가능해야 함 느슨하게 결합되어야 함 독립적으로 배포 가능함 비즈니스 역량을 중심으로 구성해야 함 작은 팀에 의해 소유됨 서비스로서의 컴포넌트화 컴포넌트: 독립적으로 대체하거나 업그레이드 가능한 소프트웨어 단위 컴포넌트화: 시스템을 구성 요소(Component)로 나누고 이를 연결하여 구축하는 것 컴포넌트화는 어떻게? → 소프트웨어를 여러 서비스로 분리하는 것 라이브러리 vs 서비스 비즈니스 수행에 따른 구성, 프로젝트가 아닌 제품 before: 기술적 계층에 따른 팀 분류 예) UI팀, 비즈니스 로직팀, 데이터베이스팀 등 단순한 변경이 필요한 경우에도 팀 간의 협업 비용이 증가함 after: 비즈니스 수행 능력(업무 도메인)에 따른 팀 분류 도..

Code States/TIL 2023.05.03

코드스테이츠 DevOps 부트캠프 두 달차, Section 2 종료!

2023.04.06 ~ 05.02 Section 2. 클라우드 서비스 운영 총 4개월의 코스로 준비된 코드스테이츠 데브옵스 부트캠프, 벌써 절반인 두 달이 지났다. 한 달이 지났을 때도 벌써 한 달?! 했는데 이번 달도 마찬가지로 .. 벌써 두 달?! 두 번째 섹션의 커리큘럼은 다음과 같다.네트워크 기초YAMLDockerAWS지속적 통합배포 자동화 중간에 팀장 커피챗이 있었는데 그때 운영진님이 요즘 어떠냐고 물어보셨었다. 나의 대답은 "너무 재밌어요!" 였다. 섹션 1은 솔직히 다 아는 내용들이어서 지루하다면 지루했는데 이번 섹션은 다 처음 배우는 내용들이어서 흥미로웠다. 특히 Docker와 AWS는 학부 시절부터 궁금해했던 내용이었는데 배우게 되니까 너무 재밌었다. 지속적 통합과 배포 자동화 과정을 진..

Code States/회고 2023.05.02

Section 2. 프로젝트 - AWS 배포

2023.04.26-05.02 두 번째 프로젝트가 끝났습니다 👏 일차별 작업 진행 사항과 모든 트러블슈팅은 TIL로 정리하였기 때문에, 해당 회고에서는 변경점이나 주요 트러블슈팅 등을 기록합니다! (TIL 링크: 마일스톤1 마일스톤2 마일스톤3 마일스톤4 마일스톤5-1 마일스톤5-2 마일스톤6 마일스톤7 마일스톤8 마일스톤9 마일스톤10) 프로젝트 목표 섹션 2 파트에 학습했던 내용을 완전히 이해하고 실습한다. AWS 리소스에 대한 이해를 통해 실제 AWS에 서비스를 배포한다 WAS를 Docker image로 빌드하여 컨테이너화(Docker, Yaml, AWS, 지속적통합) 컨테이너화한 이미지를 AWS에 배포(Docker, AWS) AWS 배포 자동화(AWS, 배포자동화) CDN을 통한 캐싱 및 HTTP..

Code States/회고 2023.05.02