연재작/DevOps (9) 썸네일형 리스트형 AWS 무중단 배포 도입기 feat. CodeDeploy 문제 상황 )실제 서비스를 제공하면서 느낀 것은 "기획에서 요구했던 내용과 실제 사용자들이 사용하면서 필요하다고 느끼는 것이 매우 다르다"는 것이다.어떤 부분은 핫픽스를 요구할 정도로 빠른 업데이트를 요한다. 요청이 올때마다 즉각적으로 수정을 하고 업데이트를 할 수는 있다. 하지만 그것의 배포는 다른 문제다.현재 구축된 서비스 환경은 "중단 배포"를 사용하기 때문이다.또한, 양해를 구하고 중간에 업데이트 공지를 한다고 하더라도수십초의 다운 타임이 존재하게 되기에 이를 공지해주어야 하는 번거로움이 있다. 이 때문에 우리는 실 사용자들이 잘 사용하지 않는 시간인 밤에 업데이트를 하게 되었다. (CDN을 사용하는 프론트엔드측이 이럴때는 부럽다. 캐시가 있고, S3를 사용하는 방식 자체가 서버가 중단되지 않아 .. private ECR은 public보다 비싸지만, 잘 사용한다면 어떨까? DevOps는 전체 인프라스트럭쳐의 구축 및 관리뿐만이 아니라,추가 리소스(예를 들어, 클라우드 리소스)를 사용할 경우, 이를 사용할 때의 비용을 최적화하는 것 또한 신경 써야 한다. IBM에서는 이와 관련한 FinOps라는 용어를 소개하고 있다. finance와 DevOps의 합성어로,클라우드 비용을 최적화하는 기술을 의미한다. 클라우드 리소스를 사용할 경우, 리소스의 효율성과 가치를 높이기 위해 협업하는 것이다.https://www.ibm.com/kr-ko/topics/finops FinOps란 무엇입니까? | IBMFinOps는 하이브리드 및 멀티클라우드 환경에서 비즈니스 가치를 극대화하는 것을 목표로 하는 클라우드 재무 관리 분야이자 문화적 관행으로 발전하고 있습니다.www.ibm.com 컨테이.. Terraform 핵심 프로세스 지난번 글https://namucy.tistory.com/93 Terraform을 통한 Infrastructure Provisioning서비스를 제공할 Infrastructure를 구성, 구축하는 것을 Infrastructure Provisioning이라고 한다. 연차가 많이 쌓인 개발자들은 코웃음을 칠 수준이겠지만, 본격적으로 개발이라는 것에 손대기 시작한 8월namucy.tistory.com Terraform을 IaC(Infrastructure as Code)라고 설명했듯이,Terraform은 코드, 프로그래밍 언어를 통해서 인프라를 구축하기 때문에 문법이 존재한다.Go 기반 HCL 선언형 언어로 관리되기 때문에 생소할 수는 있으나, 써본 경험에 의하면 JSON같은 느낌이다. 문법에 대한 설명은 .. Terraform을 통한 Infrastructure Provisioning 서비스를 제공할 Infrastructure를 구성, 구축하는 것을 Infrastructure Provisioning이라고 한다. 연차가 많이 쌓인 개발자들은 코웃음을 칠 수준이겠지만, 본격적으로 개발이라는 것에 손대기 시작한 8월부터이에 대해 관심을 가져왔고, 본격적으로 인프라의 구성과 배포를 배우기 시작한 10월부터는 배포 환경을 끊임없이 만들어왔다. 처음에는 AWS EC2 단일 인스턴스 하나 + Docker 사용을 통한 것이 전부였다.아직도 사용하는 것은 AWS뿐 이지만 그 안에서도 차근 차근 내가 다루지 못했던 인스턴스들, 서비스를 사용하며 영역을 넓혀가고 있었다. 하면 할 수록 느끼는 것은 인프라를 구축하는 데는 시간이 꽤 걸리고, 손이 많이 간다는 것이다. 도중에 어떤 값을 사용했는지도 일일이.. MSA의 분산 트랜잭션, Saga 패턴 1. MSA(Microservice Architecture) Microservice Architecture 는 Monolithic Architecture와 달리,여러 개의 서비스로 나누어서 API 서비스의 책임분리를 한 아키텍쳐 이다.한 서비스의 장애가 다른 서비스에 영향을 주는 현상을 SPOF(Single Point Of Failure)라 하는데,MSA는 서비스가 독립적으로 실행되기에 특정 서비스가 다른 서비스에 주는 영향이 적다. 그렇지만, 이 서비스를 사용하기 위해서는 필연적으로 여러 서버를 유지해야 함과 동시에이를 중앙화할 API GW라는 추가적인 인스턴스의 사용도 필요하다. 2. 분산 트랜잭션 한편, 각 서비스에 대한 DB 운영 방식 또한 어떻게 해야할 지를 생각해봐야 한다.Monolithic.. EC2 Tomcat Server pipeline 구축 + S3 정적 웹서버와 연동 정적 웹페이지를 S3에 구축했지만, 여전히 페이지가 제대로 작동하지는 않는다.아직 API 요청에 응답해주는 서버를 구축하지 않았기 때문이다. 이번에는 EC2에 docker를 이용한 tomcat server를 만들고자 한다.일단은 public에 서버를 형성하고, 나중에 security 기능을 추가하는 것으로 생각중이다. 우선 기본 VPC 세팅은 지난번 글 https://namucy.tistory.com/47 AWS EC2 Private Instance 구축 (2) VPC, 서브넷, IGW, 라우터 테이블지난 번에 그려놨던 아키텍쳐를 토대로 VPC 및 서버(인스턴스) 설정의 절차를 소개하겠다. 1. Root 사용자 vs IAM 사용자일단 AWS "콘솔에 로그인" 을 누르면 IAM 사용자 로그인창이 먼저 뜨지.. AWS S3를 통한 React SPA의 CI/CD Pipeline 정적 리소스를 반환하는 웹서버를 구축하기 위해 S3를 사용해보기로 했다.동시에, github repository의 내 branch로부터 push 할 때 한번에 업데이트 되도록 하는 S3 를 통한 웹 서버 구축 방법과 이 과정에서 알게된 것들을 적어보고자 한다. 0. S3는 VPC에서 구축되지 않는다. 맨처음 S3를 구축하기 위해서 여러 가이드를 참고해보다가 알게 된 사실이다.VPC를 먼저 만들고, EC2처럼 그 위에 S3를 구축해야할 줄 알았는데S3는 VPC위에 형성되는 것이 아니였다. 1. S3 버켓 만들기 및 object 먼저 배포해보기S3는 선택한 AWS Region에 나만의 "bucket"이라는 웹 스토리지 서버를 구축해서 사용한다.그렇기에 Region의 선택은 필수이다. 이때 Region 선택.. SPA 기능을 구현하는 웹 페이지의 CI/CD Pipeline 여태까지 소개했던 배포 방식은 순수하게 Spring boot를 통해WAS나 정적 페이지 혹은 어떻게 API를 구축하고 배포할지에 대한 내용이었다. 이제 여기에 프론트엔드의 작업물인 CSR 웹 페이지를 반환하고,여기에 API 까지 같이 구축하는 CI/CD 다이어그램를 구축해보면 아래의 그림과 같다. 기본적인 CI/CD의 흐름은 지난번 글들에서 소개한 Github Action을 사용한 CI/CD 파이프라인을 구축한 것과동일한데, 몇 가지 추가 사항 및 변동 사항이 있다. 1. AWS S3의 사용AWS는 정적 데이터를 제공하는 S3라는 서비스를 제공한다.이를 통해 HTML, CSS, JS, 이미지, 영상, 폰트 등을 제공할 수 있다.React로 만들어낸 CSR페이지와 같은 경우에도, npm run buil.. 이전 1 2 다음