Infra
-
Jenkins CI/CD 구축 (With Docker + Github + Docker Hub)Infra/CI&CD 2024. 8. 14. 16:00
깃허브 특정 브랜치에 push하면 jenkins가 dockerfile을 통해 이미지를 빌드하고, 이를 docker hub에 올린다-> 이를 배포할 ec2에서 내려 받아 배포하는 과정을 다룬다. 작업을 크게 설명하면,젠킨스 다운로드배포할 EC2에 대한 Credential 등록 - ssh agentJenkins와 깃 허브 연동및 WebHook 등록 ( Credential 등록 ) Docker hub와 Jenkins 연동( Credential 등록)파이프라인 스크립트 작성 1. 사전 작업 - 배포할 EC2와 Jenkins가 다운로드 받아진 EC2에 Docker가 설치되어 있어야 한다.- docker 설치 후 아래 명령어를 통해 docker 그룹에 user를 추가해준다sudo usermod -aG doc..
-
EC2로 Spring 레거시 배포하고 HTTPS 인증받기 (Nginx + Tomcat 연동 With Docker)Infra/AWS 2024. 8. 13. 15:48
1. 사전작업 - Nginx와 Tomcat을 띄울 인스턴스 2개 - WAS 배포 인스턴스에 Docker가 다운받아져야함 - Tomcat을 띄운 인스턴스는 깃허브 연동 (깃에서 pull 받아올 것) 2. 인스턴스2에 war 배포하기 2.1 배포를 위한 Dockerfile 작성 (프로젝트의 루트에 이를 작성해서 저장한다 파일 이름은 Dockerfile이다) Dockerfile의 내용은 다음과 같다.# 1. Maven 빌드 단계FROM maven:3.9.8-eclipse-temurin-11 AS build# 2. 프로젝트 소스 복사COPY . /app# 3. 작업 디렉토리 설정WORKDIR /app# 4. Maven을 사용하여 프로젝트 빌드 (테스트 생략)RUN mvn clean package ..
-
Github Action으로 ecr 업로드 하기Infra/CI&CD 2024. 5. 16. 23:39
ECR이란?AWS에서 제공하는 관리형 컨테이너 이미지 레지스트리 서비스AWS IAM을 사용하여 리소스 기반 권한을 가진 프라이빗 리포지토리 지원지정된 사용자 혹은 EC2 인스턴스가 컨테이너 리포지토리 및 이미지에 엑세스 가능하다. Docker hub와 같이 이미지를 저장할 수 있는 저장소와 같은 개념이다.GithubAction과 같이 사용하면, 워크플로우의 결과로 docker Image를 생성하고, ECR에 간단하게 업로드 할 수 있다.ECR 생성 아마존에서 Elastic Container Registry검색해서 시작하자Repository를 하나 만들어보자! 다음으로 IAM으로 넘어가서 User와 Policy를 생성하자정책 생성을 눌러서 새로운 정책을 생성하자 여기서 정책은 ECR에 접근하고, 이미지를 ..
-
Github Action 기본 사용법Infra/CI&CD 2024. 5. 16. 22:33
CI/CD란?소프트웨어 개발 과정에서 효율성과 신속성을 극대화하는 자동화된 프레임워크 개발부터 운영까지 소프트웨어 개발 라이프사이클의 모든 단계를 아우른다.크게 지속적 통합, 지속적 전달, 지속적 배포로 구분 된다. 지속적 통합 (CI)개발자들이 작업한 코드를 주기적으로 공유레퍼지토리에 병합, 코드 통합을 자동화하는 과정 모든 변경사항은 자동 빌드 및 테스트를 거쳐 메인 브랜치에 통합된다.코드 충돌을 최소화하며, 소프트웨어 품질을 유지하고, 배포 준비 상태를 지속적으로 유지할 수 있다.BUILD -> TEST -> MERGE 과정을 아우름 특히! TEST가 매우 매우 중요하다. 지속적 전달 (CD - Continuous Delivery)코드 변경사항이 자동으로 빌드 및 테스트를 거쳐 실제 운영 환경에 ..
-
AWS - S3,Cloudfront를 활용한 웹 페이지 배포Infra/AWS 2024. 5. 9. 16:33
CloudFront컨텐츠(파일, 동영상)을 빠르게 전송해주는 서비스이다.컨텐츠가 S3에 저장되어 있을 때 S3저장소가 한국에 있다고 가정하자이때 한국인이 한국에 S3를 활용하는 게, 외국인이 한국의 S3를 사용하는 것 보다 빠를 것이다.이는 물리적 거리가 멀기 때문이다. 이를 해결하기 위해 전세계 곳곳에 컨텐츠의 복사본을 저장해 둘 수 있는 임시 저장소를 구축하고, 가까운 저장소에서 복사본을 꺼내서 빠르게 볼 수 있도록 하는데이를 CDN이라한다. (Content Delivery Network) CloudFront는 이런 CDN서비스의 일종이다.기본적으로 S3만 사용해도 웹페이지를 배포할 수 있지만, 성능향상 및 HTTPS 적용을 위해 S3를 활용한 웹 페이지 배포시 CloudFront는 필수이다. 웹 ..
-
AWS - S3를 활용한 파일 및 이미지 업로드Infra/AWS 2024. 5. 9. 15:55
s3란?파일 저장 서비스이다. 사진이나 동영상 같은 파일을 구글 드라이브나 icloud에 업로드 하는 것과 비슷하다 백엔드 서버를 구현하다보면, 이미지 업로드를 구현할 때가 많다. 이 이미지를 EC2 내부에 저장할 수도 있지만, EC2에 쌓이는 파일이 너무 많아질 우려가 있다.따라서 파잃은 S3서비스를 이용해서 따로 관리하는 것이다.현업에서도 파일 업로드 기능을 구현할 때면 대부분 S3를 활용한다고 한다.1. S3 버킷 생성하기버킷이란? S3 서비스 내에 여러 Repositroy를 의미한다. 객체란? S3에 업로그한 파일을 파일이라 부르지 않고 객체라고 부른다. 버킷에 이미지나 파일을 올리기 위해 모든 퍼블릭 액세스를 일단 허용해두자2. 버킷 정책 추가하기 정책이란 권한을 정의하는 JSON..
-
AWS - RDS 생성Infra/AWS 2024. 5. 9. 15:04
RDS란?MySQL,MariaDB등 여러 관계형 데이터 베이스 서비스를 AWS로부터 빌려서 사용하는 관계형 데이터베이스 서비스이다. 서비스를 배포할 때 DB도 같이 배포해줘야한다. 이때 RDB를 자주 사용하는데, 자동 백업, 모니터링, 다중 AZ등 다양한 부가 기능을 제공하기 때문이다.물론 EC2에 백엔드 서버와 MySQL을 같이 설치해서 사용하면, 비용 절감 등의 장점도 있다.하지만, 백엔드 서버의 장애로 서버가 다운되었을 때 DB도 같이 날아가는 불상사를 겪을 수 있다. 현업에서도 EC2와 RDS를 분리해서 인프라를 구성하는 경우가 대부분이라 한다.1. RDS 생성하기 먼저 RDS 서비스로 이동해서 Region을 선택하고, 데이터 베이스 생성을 누른다.다음으로 템플릿을 선택한다.학습용이므로, 프리티..
-
ELB를 활용하여 HTTPS 연결하기 (2) - ELB에 도메인 연결 HTTPS 적용Infra/AWS 2024. 5. 8. 16:55
1. Route 53으로 접속해서, 등록된 도메인에 대한 레코드를 생성한다.이때 별칭을 눌러 Application/Classic Load Balancer를 선택하고, 만들어둔 ELB를 등록한다. 2. HTTPS 적용을 위해 인증서 발급 받기 AWS Certificate Manager 서비스로 접속해서 인증서 요청을 누른다. 인증서 검증을 위해 위에 버튼을 누른다. 3-10분 정도 후 검증이 완료되면, HTTPS가 적용된 것이다.3. HTTPS에 대한 리스너 추가하기 로드 밸런서에 HTTPS 리스너가 없다면, 이를 추가해주지 - HTTPS를 적용하기 위해, Route 53 에서 발급받은 인증서를 집어 넣는다.4. HTTP 요청 막기 HTTP 리스너를 삭제하거나, HTTP 리스너를 HTTPS로 리디렉션 ..