본문 바로가기

aws10

ECS(Elastic Container Service) 기본 개념 최근에 모듈화 된 애플리케이션들을 Docker로 컨테이너화 하여 ECS를 통해 배포 작업을 맡아서 해보았는데 배포하기까지 정말 많은 삽질을 하였다. 어찌어찌 결국 첫 배포 성공 기념으로 ECS 기본 개념을 간략하게 정리해보고자 한다. ECS란? AWS에서 제공하는 컨테이너 관리 서비스. 컨테이너화 된 애플리케이션의 배포 및 관리를 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스이다. EC2, Fargate 유형중 하나를 선택할 수 있다. 컨테이너 오케스트레이션 서비스는 ECS외에도 Docker Swarm, k8s, Nomad 등 다양한 오케스트레이션들이 존재한다. 그중 ECS서비스는 클러스터를 관리를 위한 추가적인 별도의 인스턴스 구성이 필요 없고, 클러스터에 대한 추가적인 비용도 없다. 또한 AWS.. 2022. 8. 28.
DynamoDB 기본 개념 DynamoDB의 구성 요소 DynamoDB는 AWS에서 제공하는 NoSql database 서비스이다. 테이블 : 데이터의 집합 항목 : 테이블이 갖는 row들 속성 : 각 항목은 하나 이상의 속성들로 구성된다. People이라는 테이블을 보면 PersonID라는 파티션 키 기준으로 항목들이 구성되어있다. 또한 각 항목들은 하나 이상의 속성들을 갖는다(PersonID, LastName, FirstName..). DynamoDB는 Json 파일로 저장된다. key-value형식이기 때문에 READ가 빠르다. 또한 NoSql답게 속성에 대한 확장성이 좋다. 다만 단점은 relation이 없기 때문에 update작업을 해야할 경우 여러 컬렉션에 중복되어 들어가 있을 칼럼들을 모두 작업해주어야 한다는 점과 ㅜ.. 2022. 7. 31.
EC2 환경에서 docker로 무중단 배포 과정 중 ScriptTimedOut 오류(Docker 권한 ) EC2 환경에서 nginx, docker로 springboot 프로젝트를 무중단 배포하는 과정에서 무수히 많은 삽질을 경험했다. 먼저 CI/CD는 Travis CI와 AWS S3, CodeDeploy를 사용했다. 배포 스크립트 파일은 해당 레파지토리에서 확인이 가능하다. ApplicationStart 이벤트가 발생할 때 다음과 같이 ScriptTimedOut 오류가 발생하였다. CodeDeploy 로그를 보아하니... dockerfile이 빌드될 때 Already exists 메시지를 호출하는 것을 볼 수 있다. dockerfile로 컨테이너를 빌드하는 과정에서 이미 동일한 이름의 docker 컨테이너가 존재하기 때문에 생성되지 못하고 결국 ScriptTimedOut 오류가 발생한 것으로 추측된다. 알고.. 2022. 4. 15.
Travis CI,CodeDeploy,S3,Nginx로 EC2에 무중단 배포하기(3) - Nginx로 무중단 배포 하기 https://ssyoni.tistory.com/25 Travis CI,CodeDeploy,S3,Nginx로 EC2에 무중단 배포하기(1) - Travis CI,S3 연동 스프링부트와 JPA를 사용한 토이 프로젝트를 진행하면서 CI/CD 구축 과정을 정리한 글입니다. Travis CI를 활용해 프로젝트를 빌드하고, AWS S3와 AWS CodeDeploy, Nginx를 통해 EC2 서버에 무중단으로 배포하 ssyoni.tistory.com https://ssyoni.tistory.com/26 Travis CI,CodeDeploy,S3,Nginx로 EC2에 무중단 배포하기(2) - Travis CI,S3,CodeDeploy 연동 CodeDeploy를 생성하고 S3로부터 받은 파일을 EC2 서버로 배포하는 .. 2022. 4. 11.
Travis CI,CodeDeploy,S3,Nginx로 EC2에 무중단 배포하기(2) - Travis CI,S3,CodeDeploy 연동 CodeDeploy를 생성하고 S3로부터 받은 파일을 EC2 서버로 배포하는 과정을 정리하였습니다. 설명하기에 앞서 요약을 해보자면 EC2와 CodeDeploy 서비스가 서로 소통(?)할 수 있게 각각 서비스에 대한 권한을 가진 '역할'을 하나씩 생성해서 부여합니다. 그다음 CodeDeploy 애플리케이션을 생성하고 프로젝트에 appspec.yml 설정 파일로 S3에서 받은 파일을 EC2로 배포하는 설정을 추가해주면 됩니다. EC2에 IAM역할 생성 CodeDeploy는 S3 버킷에 있는 파일을 EC2 서버에 배포하는 역할을 합니다. 이전 포스팅에서 IAM 사용자 추가를 통해 외부 서비스인 Travis CI가 CodeDeploy에 배포 요청을 할 수 있는 접근 권한을 생성하였습니다. 이번에는 CodeDe.. 2022. 4. 6.
Travis CI,CodeDeploy,S3,Nginx로 EC2에 무중단 배포하기(1) - Travis CI,S3 연동 스프링부트와 JPA를 사용한 토이 프로젝트를 진행하면서 CI/CD 구축 과정을 정리한 글입니다. Travis CI를 활용해 프로젝트를 빌드하고, AWS S3와 AWS CodeDeploy, Nginx를 통해 EC2 서버에 무중단으로 배포하는 환경을 구축하였습니다. 이번 포스팅에서는 Travis CI를 통해 SpringBoot 프로젝트를 자동 빌드하고 AWS S3 버킷으로 빌드한 파일을 전송하는 과정까지를 정리하였습니다. Travis CI 와 깃허브 연동 프로젝트를 테스트하고 빌드하는 과정을 수동으로 하게 되면, 먼저 깃허브에 PUSH를 하고 배포하고자 하는 환경(EC2)에서 소스를 PULL 받아 Clean&Build를 하여 Jar파일을 생성하여 배포합니다. 이러한 과정을 대신 해주는 툴이 바로 Travis.. 2022. 4. 5.
반응형