💻 Github Action
앞에선 포스트에서 언급했다시피 깃헙에서 제공하는 CI/CD 서비스입니다.
github action으로 테스트 자동화 하기
- .github/workflows/ 폴더에 YAML 파일 작성
코드 준비하기
package.json에서 test 명령어를 준비
package.json에서 타입체크 명령어를 준비
"typecheck": "tsc --noEmit"
해당 코드는 "타입 검사만 수행하고 결과물(컴파일된 JavaScript 파일)은 생성하지 말라" 라는 명령어 입니다.
❗️❗️repo 브랜치 규칙 설정
개인적으로 기본적으로 main 브랜치 규칙은 해당작업 말더라도 하는 게 좋을꺼 같아요 ...
- 테스트 실패시 PR 머지 할수 없도록 설정.
- Settings > Rules 에서 규칙을 추가
* target: main브랜치
- rule: Require Status Checks to pass before merging 설정
- 체크할 액션에서 우리가 등록한 테스트 Github action을 선택 합니당.
github action으로 EC2 배포 자동화
- Github repo 준비
* 프로젝트 와 환경 변수 준비 하시면 오키
- aws 준비 하기
*EC2에서 키페어를 생성
- github repo에서 action screte을 프라이벗 키 등록합니다
- 깃헙 액션 워크 플로 작성
* SSH 접속
- git으로 소스 코드를 최신화
- 필요한 패키지 설치, 프로젝트 빌드, 마이그레이션 진행.
- pm2 를 실행 중이라면 재실행
모니터링
앞선 게시글에서 제가 레고 만든 영상을 유튜브로 올린다고 했잖아요. 올리기전에 유튜브나 제가 영상에 잘못된 부분이 있는지 모니터링 하고 올립니다. 이와 비슷하게 컴퓨터 공학에서의 모니터링은 시스템, 애플리케이션, 인프라 상태, 성능을 지속적으로 관찰하고 수집하는 과정을 일컫는 용어입니다. 해당 개념이 왜 중요하냐면 현재 시스템이 오류 없이 잘 작동 되고 있는지, 사용자에게 문제가 발생하고 있지 않은지 확인 하는것은 시스템 운영(ops)부분에 있어서 가장 기초가 되는 토대이기 때문입니다.
📖 목적
-
가시성 확보
- 시스템 내부에 어떤 일이 일어나고 있는지 확인이 가능 합니다
-
장애 조기 감지
- 사용자에게 문제가 발생하기전에 비정상 적인 상태를 조기에 감지 하여 알림을 발생시킵니다.
-
성능 최적화
- 수집된 데이터를 분석하여 시스템 병목 현상을 찾아 성능개선의 근거로 사용합니다.
시스템 병목 현상이란? 시스템 내부에 전체적인 속도를 저하 시키는 특정 부분을 의미합니다.
-
효율적인 문제 해결
- 장애 발생시 수집된 데이터를 토대로 원인을 효율적으로 해결할수 있습니다
모니터링 코어 개념
3가지 모니터링 요소
- 메트릭
- 시간에 따라 측정 되는 수치 데이터로 시스템 상태를 숫자로 표현.
- cpu 사용률, 응답시간, 디스크 io 속도 etc
- 시계열 데이터베이스(TSDB)에 저장되며, 그래프나 대시보드를 통해 추이 분석에 사용됩니다.
- 로그
- 애플리케이션이나 시스템에서 발생하는 이벤트에 대한 시간을 의미 합니다.
- 유저의 로그인 로그아웃 기록, 에러 메시지, tx성공 실패 기록 etc
- 구체적인 원인을 파악하는데 용이하며, 효율적으로 대용량 로그를 저장, 수집, 검색하는 시스템이 필요로 합니다
- 트레이스
- 유저 혹은 사용자의 요청이 여러 서비스와 컴포넌트를 통해서 완료 되기 까지 전체 흐름을 추적하는 데이터
- 웹요청이 로드밸런서를 거쳐서 api 서버, 인증 서버, db 까지 도달하는 모든 과정
- 분산 시스템에서 어떤 서비스가 지연을 유발하는지 파악하는 역할을 합니다
모니터링과 관측 가능성의 차이
- 모니터링
- 측정할 대상을 미리 정의한 다음, 해당 문제에 대응하는 것을 의미합니다.
- "memory 사용량이 90퍼센트 넘으면 알림"'
- 관측 가능성
- 시스템에서 발생하는 모든 데이터를 기반으로 문제가 왜 발생하였느지 분석, 파악하는 것을 의미 합니다.
AWS CloudWatch
- 인프라 모니터링의 도구
- 연결된 aws 리소스 들이 어떻게 작동되는 가시적으로 확인이 가능.
- 복잡한 세팅없이도 많은 정보를 확인할 수 있어서 편리함
- 다른 모니터링 도구도 같이 쓸수 있어요
Sentry
애플리케이션 에러 모니터링 도구 입니다
- 실시간으로 에러를 수집하고 확인 할 수 있도록 하는 서비스입니다.
- 에러 발생시 알림을 보낼수 있습니다.
- 에러에 대한 여러 기록들을 조회 할수 있습니다.
- Jira 와 같은 트래킹 도구와 연동하여서 사용 가능 합니다