시스템을 구축하면서 만났던 이슈들을 적어보기로 했다. 물론 훨씬 많은데 개인 노션에 정리해두었던것들부터 정리해보자 컨테이너 메모리 부족 Issue : 컨테이너 배포시에 메모리 부족으로 배포가 안되는 문제 service (서비스 이름) was unable to place a task because no container instance met all of its requirements. The closest matching container-instance (컨테이너 인스턴스 아이디) has insufficient memory available. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide. P..
1, 2, 3, 4편에서 인프라 구축, 로깅 / 모니터링 / 경보 시스템 구축, CI/CD 구축을 직접 해보았다면 이번 글에서는 테라폼으로 이것들을 수행할 수 있는 내용을 작성해보겠다. 원래는 인프라 구축을 AWS 내에서만 진행했기 때문에 AWS CloudFormation 으로 진행했었는데 다양한 프로바이더의 확장성을 고려하여 Terraform 으로 교체하게 되었다. 인프라 구축 terraform-aws-modules 사용하여 코드 작성 https://registry.terraform.io/namespaces/terraform-aws-modules terraform-aws-modules 이 없는 모듈은 직접 resource 와 module 만들어서 사용 Terraform Registry registry...
앞의 글에서 인프라 구축, Grafana 설정까지 완료하였으니 CI/CD 구축을 해보자 이전에는 Github Actions 를 사용했었는데 비용 문제 등으로 인해 AWS CodePipeline 으로 넘어갔다. 추후 Terraform 코드로 작성할테지만 UI 로 설정해보자 Pipeline 은 Github Actions의 Job 처럼 생성하는 사람 마음대로 구성할 수 있다. Source -> Build -> Deploy 순으로 실행되도록 파이프라인을 구성했다. 0️⃣ CodePipeline 1️⃣ Source Github 의 특정 Repository 의 branch 와 연결하는 단계이다. 해당 Repository 에 특정 branch 에 commit/push 되면 트리거가 걸려 이 Code Pipeline ..
Grafana를 Terraform 으로 프로비저닝하기 전에 UI 에서 직접 설정을 해보자 1️⃣ Data Source 2️⃣ Dashboard 로그를 전부 보여주는 Dashboard Error 로그의 count 를 보여주는 Dashboard (Alert 만들기용) 3️⃣ Alert Alert Rules Contact Points 슬랙으로 경보를 쏴주어야 하기에 Slack Contact Point 를 만들어준다. 경보를 보낼 내용의 템플릿을 생성할 수 있다. {{ define "Alert Instance Template" }} 에러 메시지 : {{ .Labels.log }} {{ end }} Notification Policies Label 을 필터링하여 contact point 를 설정한다. defaul..
프로세스 1️⃣ 이미지 준비 API Server Dockerfile 을 통해 API Server 이미지를 생성하여 ECR 에 올려서 준비하기 (추후 CI/CD 를 통해 자동화됨) Grafana 프로비저닝이 필요하다면 아키텍처에 맞는 grafana / loki 이미지를 pull 받아 프로비저닝된 이미지로 생성하여 ECR 에 올려서 준비하기 이 프로젝트에서는 기본 이미지를 사용한 후 나중에 Terraform 으로 프로비저닝 해줄 예정이기에 ECR 에 올리는거 생략하고 기본 Grafana 이미지를 준비한다. Loki 프로비저닝이 필요하여 아래의 config 파일과 Dockerfile 로 이미지 생성하여 ECR 에 올려서 준비하기 더보기 auth_enabled: false server: http_listen_p..
ECS 환경에서 구축할 시스템의 기술을 선택하는데 있어서 여러가지 선택지가 있었다. 1️⃣ AWS CloudWatch Logs AWS에서 제공하는 로그 데이터 수집 및 관리 서비스 AWS 리소스 및 애플리케이션에서 생성되는 로그 데이터를 쉽게 수집, 저장, 모니터링하고 필요한 경우 검색 가능 장점 AWS의 관리형 로깅 서비스로 무료로 제공 ECS EC2 환경과 더 쉽게 통합 가능 로그 데이터 수집, 저장, 간단한 검색 및 분석이 가능 단점 고급 로그 분석 기능이 부족할 수 있음 가격은 사용량에 따라 다르며, 로그 데이터의 용량과 보존 기간에 따라 비용이 발생 2️⃣ ELK / EFK 장점 무료로 구축 가능 (오픈소스) 데이터 시각화 및 대시보드 생성됨 단점 구축 및 운영이 복잡하여 구축 및 운영 비용 발..
그동안 Docker를 로컬/ec2 인스턴스에서 적용해본다거나 Docker Compose를 로컬에서 띄워본다거나 동시에 3개의 app을 클러스터링 해본다거나 등등은 해보았으나 CI/CD까지 구성해보진 못했었다. 이번 글에서는 test용 인스턴스 생성 -> test용 repository 생성 + NestJS 코드 import -> Dockerizing (Dockerfile 만들기) + 이미지 생성 -> CI/CD 구성하여 인스턴스에 자동 배포 순서로 해보려고 하고, github repo, github action, ec2 instance, ECR, NestJS 등등을 사용한다. test용 인스턴스 생성 test용 repository 생성 + NestJS 코드 import 내 팀 깃허브에 레포를 하나 만들었다..
이후 docker-image.yaml 코드를 작성하면서 발생한 오류들을 차근차근 살펴보자. 바보같은 오류도 있었지만 하나하나 리뷰하려고 한다. 1. import worker-gridge code 과정에서 missing Dockerfile 에러메시지 : ERROR: failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount2011953406/Dockerfile: no such file or directory 문제 : Dockerfile을 로컬에서만 만들고 git에는 안올렸었다. ..
- Total
- Today
- Yesterday
- ECS
- Grafana
- CSS
- springboot
- SG
- Hook
- 로깅
- EC2
- AWS
- Docker
- javascript
- Grafana Alert
- redux
- ecr
- html
- subnet
- 인프라
- ALB
- react
- VPC
- Workflow
- github action
- ci/cd
- Service
- LOKI
- 모니터링
- 서버
- RDS
- js
- 리액트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |