DevOps BootCamp 171

Git Action-S3 배포

GitHub Action Secret 설정 우선 yml에서 사용할 수 있도록, AWS에 접근이 가능한 AWS-ACCESS-KEY와 SECRET-KEY를 Github에 설정하여야 합니다. 배포를 원하는 Repository에 접속한 뒤 Settings > Secrets > Actions을 선택합니다. Actions Secrets 우측의 New repository secret를 선택합니다. new repository scret을 추가한다. AWS_ACCESS_KEY_ID : IAM -> 보안자격증명 에있는 access_key_id AWS_SECRET_ACCESS_KEY : IAM -> 보안자격증명 에있는 secret_access_key_id REACT_APP_ENDPOINT : 연결한 backend서버 주소 ..

ECS 배포 자동화

배포를 자동화할 ECS 작업 테스크의 JSON파일을 가져온다. task-definition.json 파일을 프로젝트 폴더안으로 옮긴다. 나는 프로젝트폴더 최상위 폴더에 aws폴더를 만들어서 넣어줬다. 깃액션 yml 작성 프로젝트 폴더 최상위에 /github/workflows/deploy-ecr.yml 파일을 만들어준다. env에 설정된 값은 다음과 같다. AWS_REGION: ap-northeast-2 사용하고 있는 aws region이다. ECR_REGISTRY: 725601756882.dkr.ecr.ap-northeast-2.amazonaws.com ecr의 registry이다 이미지의 앞부분 ECR_REPOSITORY: mildstone-backend ecr의 repository이다 이미지의 뒷부분..

서버리스

서버리스 등장 배경 및 소개 웹 애플리케이션을 적은 예산 빠르게 확장 가능 관리와 운영은 쉽게 -> 이것을 혼자 할 수 있을까? = 당연히 불가능 -> 하지만 여기에도 답은 있다. 바로 '서버리스'이다 서버리스의 정의 > 서버가 없는 게 아니라, 서버에 대한 고민을 안 하는 것 컴퓨팅의 진화 과정 > 오래전에는 애플리케이션을 배포하려면 직접 하드웨어 서버를 구매해서 구성, 이때는 하드웨어와 소프트웨어 둘 다 관리를 했어야 했다. > 이런 서버의 하드웨어 관리의 어려움을 해결해 준 것이 AWS 클라우드 컴퓨팅 서비스 EC2였다 -> 하드웨어 관리의 불안감을 덜 수 있게 됨 > 하지만 빌려서 구성한 서버의 소프트웨어도 보안, 업데이트, 백업과 같은 많은 관리 과정이 필요 > 이런 서버의 소프트웨어 관리의 어..

마이크로서비스 아키텍처의 정의

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

프로젝트 2 회고

▶ Project 02 - 이번 프로젝트는 CI/CD를 구축하여 3-tier-architecture를 구축하는 것이었습니다 - 이번에는 프로젝트 단계마다 시간 제한이 있었고 처음이었지만 재밌었던 것 같습니다 - 이번에도 처음부터 오류도 많이 만나고 어려웠지만 모르는 것을 팀원들과 상의하여 해결해 나갈 수 있었습니다 day1 마일스톤 1 fastify를 이용해 간단한 서버를 구축하고 dockerfile로 컨테이너화 한 후 ecr로 푸쉬하는 작업을 했었습니다 여기까지는 잘 되었었습니다 마일스톤 2 서버와 mongo DB를 docker-compose로 작성하여 한꺼번에 컨테이너를 실행 시키는 것이었습니다 시험 삼아 로컬에서 컨테이너화 한 mongo DB로 접속을 시도했으나 아래와 같은 오류가 생겼었습니다 > ..

EC2 인스턴스에 CodeDeploy-Agent 설치

배포할 서버에 접속하여 최초 한 번만 설치 1. apt 저장소 업데이트 sudo apt-get update 2. ruby 설치 CodeDeploy Agent는 ruby라는 프로그래밍 언어로 작성 -> ruby 설치해줘야 함 # ubuntu 16.04 이상 sudo apt-get install ruby 3. wget 설치 sudo apt-get install wget 4. Agent 설치 wget으로 Agent의 설치파일을 다운받는 과정에 bucket 이름과 region 식별자를 적절히 적어주면 됨, 한국 리전을 사용하려면 wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install을 사용 # install..

카나리 배포

카나리 배포란? > 전체 인프라에 새로운 소프트웨어 버전을 릴리스하여 모든 사용자가 사용할 수 있도록 하기 전에 변경 사항을 천천히 릴리스함으로써 프로덕션 환경에 새로운 소프트웨어 버전을 도입하는 위험을 줄이는 기술 > 이 기법의 이름은 광부들이 광산으로 들어갈 때 새장에 카나리아를 넣어 가져가는 것에서 유래 > 광산에서 유독가스가 누출되면 광부들이 중독되기 전에 카나리아가 먼저 죽게 됩니다. > Canary Release는 비슷한 개념으로 잠재적 문제를 초기에 발견하여 전체 운영환경이나 사용자에게 영향을 미치는 것을 방지 즉, 특정 서버에만 배포를 진행하여 오류 여부를 확인하고 문제가 없다면 모든 서버에 새로운 버전을 단계적으로 배포하는 방식 카나리 배포 장점 문제 발생 시 먼저 배포가 진행되었던 서버..

롤링 배포

롤링 배포란? 롤링 배포는 애플리케이션이 실행 중인 인프라를 완전히 교체하여 이전 버전의 애플리케이션을 새로운 버전의 애플리케이션으로 서서히 교체하는 배포 전략 롤링 배포는 가용 자원이 제한적일 경우에 사용 롤링 배포의 방식 [출처] codestates 사용 중인 인스턴스(v1) 내에서 새 버전(v2)을 점진적으로 교체. 롤링 배포의 장점 업그레이드 과정에서 문제가 발견되면 일반적으로 롤링 배포를 "reverse"로 이동하여 새 버전의 앱을 제거하고 이전 버전을 다시 시작할 수 있음 Downtime이 없음 롤링 배포의 단점 배포가 진행되는 동안 구버전과 신버전이 공존하기 때문에 호환성 문제가 발생할 수 있음 배포 중인 서버는 서비스가 중단된 상태이기 때문에 서버 부하량을 체크하며 배포를 진행해야 함

블루/그린 배포

블루 / 그린 배포란? 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델 블루 / 그린 배포가 필요한 이유 배포를 자동화할 때 겪는 어려움 중 하나는 소프트웨어를 최종 테스트 단계에서 실제 프로덕션 단계로 전환하는 컷오버 자체 > 다운 타임을 최소화하려면 이 작업을 신속하게 수행해야 함 컷오버(cutover) : 기존에 운영되던 환경을 중단시키고, 새로 구축된 환경으로 오픈하는 것 다운타임(Downtime) : 시스템을 이용할 수 없는 시간 블루 / 그린 배포의 방식 [출처] codestates blue를 실제 운영 중인 환경으로 가정 새로운 버전을 릴리스 하고 싶은 경우 green 환경에서 테스트를 진행..

서버 환경 변수 설정

1. 환경 변수를 AWS System Manager Parameter Store에서 설정할 것이기 때문에 AWS CLI를 먼저 EC2 instance에 설치해야 한다. 밑에 명령어를 차례대로 입력 > 이렇게 되면 aws CLI는 설치가 완료된 것이다 2. RDS 생성 검색 창에 RDS 입력 후 데이터베이스 생성을 클릭 엔진 옵션에 원하는 데이터베이스 소프트웨어를 선택 탬플릿은 사용 용도에 따라 선택하면 되는데, 비용이 제일 싼 걸 선택했다 스크롤을 내려 DB 인스턴스 식별자, 마스터 사용자 이름, 암호를 기입 컴퓨터 리소스는 기존 EC2에 연결하고 싶으면 오른쪽을 아니면 왼쪽을 클릭 VPC는 기존 EC2 VPC에 연결할 수 있음 DB 서브넷 그룹도 기존 존재하던 것에 연결할 수 있음 보안 그룹도 기존에 ..