Code States 136

[0602] 서비스 모니터링 - Prometheus 모니터링 시스템

학습 목표 모니터링의 목표와 측정 항목(metric) 서비스 및 계층별 메트릭을 이해할 수 있다. 주요 메트릭이 어떤 범주(컴퓨팅 유닛 관련, 요청/응답 관련, 스케일링 관련)에 속하는지 이해할 수 있다. 서비스 별 "키 메트릭"(Key metric, 핵심 지표)이 무엇인지 이해할 수 있다. 사이트 신뢰성 엔지니어링(SRE)에서 필요로 하는 주요 메트릭과, 모니터링 패턴을 이해할 수 있다. Amazon CloudWatch CloudWatch를 통해 로그 및 그래프를 볼 수 있다. CloudWatch를 통해 경보를 설정할 수 있다. 오토 스케일링 원리를 복습하고, CloudWatch 및 SNS, Lambda를 통해 경보가 전달되는 메커니즘을 이해하고 구현할 수 있다. Prometheus + Grafana ..

Code States/TIL 2023.06.02

[0601] 서비스 모니터링 - Auto Scailing + CloudWatch를 이용한 알림

Bare Minimum Requirement EC2 서버를 ASG를 통해 구성합니다. 구성은 다음을 따릅니다. CloudWatch 알람을 통해 ASG의 스케일 인/아웃을 진행합니다. 스케일 인/아웃이 진행될 때 디스코드에 알림을 보냅니다. 메트릭을 바탕으로 장애 발생 예상 시점에 디스코드에 알림을 보냅니다. CPU 사용률(CPUUtilization) 값이 특정 값 이상일 때 경보가 발생하게 하세요 SNS 주제를 생성한다 Lambda 함수를 생성한다 람다 함수에 트리거를 추가한다 람다 함수의 소스 코드를 수정한다 web hook을 전송할 url을 람다 함수의 환경변수에 추가한다 Auto Scailing Group을 만들기 위한 시작 템플릿을 생성한다 오토 스케일링 그룹을 생성한다 오토 스케일링 그룹에 동적..

Code States/TIL 2023.06.01

[0531] 서비스 모니터링 - 모니터링의 목표와 측정 항목

학습 목표 모니터링의 목표와 측정 항목(metric) 서비스 및 계층별 메트릭을 이해할 수 있다. 주요 메트릭이 어떤 범주(컴퓨팅 유닛 관련, 요청/응답 관련, 스케일링 관련)에 속하는지 이해할 수 있다. 서비스 별 "키 메트릭"(Key metric, 핵심 지표)이 무엇인지 이해할 수 있다. 사이트 신뢰성 엔지니어링(SRE)에서 필요로 하는 주요 메트릭과, 모니터링 패턴을 이해할 수 있다. Amazon CloudWatch CloudWatch를 통해 로그 및 그래프를 볼 수 있다. CloudWatch를 통해 경보를 설정할 수 있다. 오토 스케일링 원리를 복습하고, CloudWatch 및 SNS, Lambda를 통해 경보가 전달되는 메커니즘을 이해하고 구현할 수 있다. Prometheus + Grafana ..

Code States/TIL 2023.05.31

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

2023.05.03 ~ 05.30 Section 3. 마이크로서비스와 인프라스트럭처 관리 벌써 섹션 3이 끝났고, 3달 가량의 시간이 지났다. 그새 날씨도 많이 더워지고 여름에 가까워지고 있다. 16주의 커리큘럼 중 단 6주 밖에 남지 않은 시점.. 시간은 왜 이리 빠르게 흐르는 건지! 세 번째 섹션의 커리큘럼은 다음과 같다. 마이크로서비스 마이크로서비스 작성 Infrastructure as Code 컨테이너 오케스트레이션 솔직히.. 마이크로서비스 섹션에 들어온 후 좀 힘들었다. 처음 실습을 할 때는 간단한 튜토리얼이었어서 '코드만 짜두면 서비스들이 자동으로 만들어진다고..?!'하면서 엄청 신기했다. 지금까지 콘솔이나 cli를 통해 하나하나 만들던 서비스들이 문서 하나만 실행하면 뚝딱 만들어지고 연결되니..

Code States/회고 2023.05.30

Section 3. 프로젝트 - 마이크로서비스

2023.05.24-05.30 세 번째 프로젝트가 끝났습니다 👏 일차별 작업 진행 사항과 모든 트러블슈팅은 TIL로 정리하였기 때문에, 해당 회고에서는 변경점이나 주요 트러블슈팅 등을 기록합니다! (TIL 링크: Tutorial Step1 Step2 Step3 Step4) 프로젝트 목표 AWS 클라우드 환경을 기반으로 하는 느슨하게 연결된(loosely coupled) 애플리케이션 아키택처에 대한 이해 Serverless를 이용한 메시지 대기열 활용 이해 및 구현 요구사항에 따른 애플리케이션과 인프라 구현 문제사항 해결을 위한 추가 리소스 생성 → DLQ, Legacy 시스템 성능문제 해결, SES 아키택처 다이어그램 제작 진행 일정 Day 1: Serverless를 이용한 Lambda 생성, Serve..

Code States/회고 2023.05.30

[0526] 섹션 3. 프로젝트 - 마이크로서비스 Day 3 - Step 4(데이터베이스의 재고를 증가시키는 Lambda 함수 생성)

Step 4. 데이터베이스의 재고를 증가시키는 Lambda 함수 생성 step 2를 진행하며 메시지 바디의 값을 읽지 못해 디비에서 값을 읽어오는 것으로 소스코드를 수정한 부분이 있었다 최종 요구사항 반영을 위해 다시 메시지 바디의 값을 읽어오도록 변경했다 이게 진짜 어이가 없는게 어제는 분명 안됐는데.. 오늘 다시 해보니까 됐다 무슨 차이인지 도저히 모르겠다 아무튼 됐으니.. stock_increse_lambda 함수를 배포한 후, 정상 작동하는지 보기 위해 기존 람다 함수 수정 전에 테스트를 진행해보았다 목표 url에 post 요청을 보냈다 트러블슈팅 바디 값을 인식하지 못하고 null로 반환되는 상황이 발생했다 헤더를 보니 컨텐트 타입이 text/plain으로 되어있었다 수정이 안되어서 체크를 해제..

Code States/TIL 2023.05.26

[0525] 섹션 3. 프로젝트 - 마이크로서비스 Day 2 - Step 3(메세지를 Factory API로 전송하는 Lambda 구성 및 DLQ 추가)

DLQ로 사용할 SQS 생성 기존 SQS에서 DLQ 선택 메시지 소비 람다 함수 생성을 위해 서버리스 템플릿 생성 메시지의 내용을 잘 읽어왔는지 확인하기 위해 console.log 작성 module.exports.handler = async (event) => { console.log(event) return event }; 생성된 람다 함수에 트리거 추가 그러나 권한 문제 발생 람다 함수의 권한 추가 트리거 생성 완료 데이터베이스 연결 오류 발생 too many connections 데이터베이스를 수강생 전체가 사용하면서 발생한 오류같았다 엔지니어님 이거 보시면 연결수 늘려주세요 curl 요청 후, SQS에 있던 메시지가 사라진 것을 볼 수 있다 람다 함수의 로그를 살펴보면 메시지가 정상적으로 넘어온 ..

Code States/TIL 2023.05.25

[0525] 섹션 3. 프로젝트 - 마이크로서비스 Day 2 - Step 2(“재고 없음” 메세지 전달 시스템 구성)

SNS 주제 생성 SQS 대기열 생성 SNS 구독 생성 람다 함수 환경변수에 TOPIC_ARN 추가 람다 함수 대상 추가 SNS 메시지 전송을 위한 코드 추가 재고가 0 이하일시, 구매 불가 메시지와 함께 sns로 메시지가 전송되어야 함 그러나 Internal Server Error 발생 SQS에 메시지도 들어가지 않음 트러블슈팅: ParameterValueInvalid CloudWatch를 통해 로그를 살펴본 결과, ParameterValueInvalid 오류가 발생 console.log를 통해 Params를 찍어본 결과, MessageAttributeFactoryId의 값이 undefined인 것을 확인 POST 요청 시 바디 값으로 넘겨도 값을 읽지 못해서 코드를 수정하기로 결정 데이터베이스에서 읽..

Code States/TIL 2023.05.25

[0525] 섹션 3. 프로젝트 - 마이크로서비스 Day 2 - Step 1(Lambda 서버 - DB 연결)

로컬 환경에서 테스트를 위한 .env 파일 생성 로컬 환경에서 테스트 하기 위한 npm install & npm start localhost:8080/product/donut 접속 시 데이터베이스 내용이 정상적으로 나타나는 것을 확인 /checkout 엔드포인트로 curl POST 요청시 디비에 정상적으로 값이 반영되는 것을 확인할 수 있음 서버리스 배포 진행 람다함수 생성 완료 환경변수 설정 후 api uri로 접근시 값이 정상적으로 나오는 것을 확인할 수 있음

Code States/TIL 2023.05.25

[0524] 섹션 3. 프로젝트 - 마이크로서비스 Day 1 - Tutorial

Step 1. Serverless를 이용한 Lambda 생성 serverless 설치 후 템플릿 생성 serverless.yml 파일에서 지역을 수정해준다 service: tutorial-step-1 frameworkVersion: '3' provider: name: aws runtime: nodejs18.x region: ap-northeast-2 functions: api: handler: index.handler events: - httpApi: path: / method: post 배포를 진행한다 터미널에 나타난 api 주소로 get 요청을 보내면 정상적으로 응답하는 것을 볼 수 있다 hello 모듈로 접근할 수 있도록 yml 파일을 수정한다 service: tutorial-step-1 frame..

Code States/TIL 2023.05.24