
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, Loki를 ECS 환경에서 사용하여 모니터링, 로깅, 경보 시스템을 구축하게 된 서사를 먼저 설명한 후 기술 사용한 방법들을 적으면 좋을 것 같아서 따로 빼서 작성해보았다. 1️⃣ 배경 사내에서 진행중인 프로젝트의 수가 굉장히 많다. 동시에 돌리는 프로젝트의 개수가 약 10개정도 된다. 그중 프로덕트를 운영 & 개발하는 프로젝트의 백엔드 개발팀장으로 활동한다. 신규 피쳐 개발과 기존 피쳐 유지보수를 병행하는 것은 쉽지 않다. 개발 과정에서 우린 프리랜서 개발자들과 함께하고, 연차와 실력도 다양하다. 그들과 작업을 할 때 소통의 과정도 중요하지만 작업한 내용을 매니징 하는것도 꽤 중요하다. 개발한 내용을 리뷰하고 머지하여 배포를 하면 리뷰의 과정을 거쳤음에도 불구하고 예상치 못한 에러가 날..

지난 글에서 Docker CI/CD 구성하여 자동배포 하기를 했는데 그 다음 순서로 Docker Compose까지 적용해보자 EC2 인스턴스에 compose 설치해주기 https://docs.docker.com/compose/install/linux/ Install the Compose plugin docs.docker.com https://zosystem.tistory.com/324 CentOS 7 - Docker, Docker-compose 설치 docker 설치(repository추가 및 install) # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # yum install docker-c..

그동안 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에는 안올렸었다. ..

여러가지 CI/CD 툴을 찾아보다가 가장 많이 쓰이는 Jenkins는 어차피 레퍼런스가 많으니 언제든 해볼 수 있고, 레퍼런스가 아주 적은 툴인 Travis CI를 사용해봤다. github 레포에 최신화된 React.js 웹 코드를 올리고, s3 버킷에 build된 폴더를 올려 배포하는 형태로 진행했다. 코드 language: node_js node_js: - '16' install: - npm install script: - CI=false npm run build deploy: provider: s3 access_key_id: $AWS_ACCESS_KEY_ID secret_access_key: $AWS_SECRET_ACCESS_KEY bucket: 'test-s3-bucket' local_dir: b..
계속 해봐야지 해봐야지 미루고 미루던 CI/CD를 해보려 한다! 🏃♂️ 0-1. CI란 무엇인가? Continuous Integration으로 직역하면 지속적인 통합이다. 다시말해 여러 개발자가 작성하거나 수정한 코드를 지속적으로 통합하고 테스트하는 것을 말한다. 0-2. CD란 무엇인가? Continuous Delivery/Deployment으로 직역하면 지속적인 배포이다. 다시말해 개발, 통합, 배포, 릴리즈, 테스트를 자동화하여 지속적으로 배포하는 것을 말한다. 우리는 gitlab master branch에 push하면 자동으로 AWS EC2에 빌드&배포 까지 할예정이다. gitlab에 프로젝트 만들기와 AWS의 EC2 인스턴스 만들기는 미리 해두었다. 1. gitlab-runner 설치 & 등록..
- Total
- Today
- Yesterday
- RDS
- VPC
- js
- Hook
- 서버
- CSS
- Docker
- github action
- Service
- ALB
- 로깅
- redux
- ECS
- 모니터링
- Grafana
- AWS
- Workflow
- EC2
- springboot
- Grafana Alert
- ecr
- 리액트
- ci/cd
- 인프라
- javascript
- react
- subnet
- SG
- html
- LOKI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |