HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
👼
[팀2] 극락이들
/
🌱
백엔드
/
🤔
Infra 구성
🤔

Infra 구성

✏️
극락이들의 CleanCode 가이드 문서입니다. ⇒ 궁금한 점이 있으면 데이비( )에게 질문해주세요!
Infra 구성을 위해 해당 페이지를 참고하였습니다.
도메인 구매 및 Route53 등록
1. 도메인 구매 무료 도메인 Freenom 이용하여 도메인 구매(무료임) 'taek.gq' 도메인을 구매하였으며, 해당 도메인을 Route53에 등록하는 과정을 기록할 예정. 업체의 경우, 원하는 도메인을 아이네임즈와 같..
도메인 구매 및 Route53 등록
https://taekisgood.tistory.com/entry/%EB%8F%84%EB%A9%94%EC%9D%B8-%EA%B5%AC%EB%A7%A4-%EB%B0%8F-Route53-%EB%93%B1%EB%A1%9D
도메인 구매 및 Route53 등록
AWS의 Certificate Manager 로 SSL 인증서 발급 받기
보통 서비스가 소규모라면 1대의 서버에 Nginx를 설치하고 Let's Encrypt 를 설치해서 SSL을 등록합니다. 다만 이럴 경우 트래픽이 늘어 로드밸런서 + 여러 서버 구성으로 확장하기가 쉽지 않습니다. 불가능하진 않습니다. Nginx를 ELB 대신에 로드밸런서로 사용하면 됩니다. AWS의 Certificate Manager로 생성한 인증서는 무료입니다. 사설 기관은 비용이 청구됩니다. Certificate Manager 서비스로 이동합니다.
AWS의 Certificate Manager 로 SSL 인증서 발급 받기
https://jojoldu.tistory.com/434
AWS의 Certificate Manager 로 SSL 인증서 발급 받기
AWS ELB를 도메인 A레코드로 설정하기(가비아, 후이즈, 닷네임 코리아)
도메인 이란 ? "서울시 서초구 강남대로 123"과 같이 주소를 통해 장소를 찾아가듯 인터넷에서도 주소를 입력하여 원하는 웹페이지로 찾아갈 수 있습니다. 인터넷 주소는 IP라는 숫자로 이루어져 있는데 (예시 : 220.10.105.130) 숫자로 이루어진 인터넷주소를 알기 쉽게 영문으로 표현한 것이 도메인입니다. (예시 : nds.nongshi...
AWS ELB를 도메인 A레코드로 설정하기(가비아, 후이즈, 닷네임 코리아)
https://support.xavis.kr/hc/ko/articles/360028786492-AWS-ELB%EB%A5%BC-%EB%8F%84%EB%A9%94%EC%9D%B8-A%EB%A0%88%EC%BD%94%EB%93%9C%EB%A1%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-%EA%B0%80%EB%B9%84%EC%95%84-%ED%9B%84%EC%9D%B4%EC%A6%88-%EB%8B%B7%EB%84%A4%EC%9E%84-%EC%BD%94%EB%A6%AC%EC%95%84-
AWS ELB를 도메인 A레코드로 설정하기(가비아, 후이즈, 닷네임 코리아)
ACM/SSL 인증서를 로드 밸런서에 연결
최종 업데이트 날짜: 2021년 10월 12일 AWS Certificate Manager(ACM) SSL/TLS 인증서를 로드 밸런서에 연결하려면 어떻게 해야 합니까? ACM은 Elastic Load Balancing과 통합되어 있습니다. ACM을 사용하여 퍼블릭 인증서를 요청하거나 ACM으로 인증서를 가져올 수 있습니다. 인증서를 생성하거나 가져온 후에 인증서를 Classic Load Balancer, Application Load Balancer 또는 Network Load Balancer에 연결할 수 있습니다.
ACM/SSL 인증서를 로드 밸런서에 연결
https://aws.amazon.com/ko/premiumsupport/knowledge-center/associate-acm-certificate-alb-nlb/
ACM/SSL 인증서를 로드 밸런서에 연결
nginx | site-enabled, site-available.md
nginx 에서 사용방법 중에 sites-available과 sites-enabled로 가상 홈페이지를 관리하는 것이 있다.일반적으로 ln -s 심볼릭을 사용해서 설정을 공유한다. 그런데 이게 미묘한 차이로 날려먹는 경우가 있어서 다시 기억하고자 글을 남긴다. 설정을 저장하는 곳이다. 여기에 설정을 만든 것은 실제로 nginx에 반영되지는 않습니다. 반영하기 위해서는 sites-enabled 에 설정파일을 복사 또는 심볼릭링크를 걸어줍니다.
nginx | site-enabled, site-available.md
https://forteleaf.tistory.com/entry/nginx-site-enabled-site-availablemd
nginx | site-enabled, site-available.md
AWS EC2 인스턴스(Ubuntu 18.04 LTS)에 Docker CE 설치 | DevSecOps 구축 컨설팅, 교육, 기술지원 서비스 제공
신규 Host Machine에 처음으로 Docker CE을 설치하기 전에, Docker Repository 설정이 필요하다. 이후에 Repository로부터 Docker를 설치 및 업데이트할 수 있다. Ubuntu Server 18.04 LTS AMI를 사용하여 AWS EC2 인스턴스가 시작되어 있어야 한다. AWS Management 콘솔에 로그인한 다음, EC2 콘솔을 연다. 좌측 탐색 창에서 인스턴스를 선택한다. 인스턴스 목록에서 연결할 인스턴스를 체크한 다음, 연결 버튼을 클릭한다.
AWS EC2 인스턴스(Ubuntu 18.04 LTS)에 Docker CE 설치 | DevSecOps 구축 컨설팅, 교육, 기술지원 서비스 제공
https://insight.infograb.net/docs/aws/installing-docker-on-aws-ec2/
AWS EC2 인스턴스(Ubuntu 18.04 LTS)에 Docker CE 설치 | DevSecOps 구축 컨설팅, 교육, 기술지원 서비스 제공
[Deploy] CodeDeploy로 자동배포 해보기
참고 jojoldu님의 블로그 게시글을 참고했습니다. 와중에 시간이 흘러 조금 바뀐 부분이나 제가 애먹었던 부분에 대해 추가하여 포스팅합니다. 참고 AWS EC2 instance가 running 상태임을 전제로 합니다. 참고 AWS EC2 instance OS로 Ubuntu를 사용하였습니다. 참고 AWS 홈페이지 언어는 "한국어"로 설정한 상태입니다. AWS IAM으로 이동하여 사용자를 추가합니다. "사용자 이름"을 자유롭게 설정합니다.
[Deploy] CodeDeploy로 자동배포 해보기
https://woomin.netlify.app/Posts/2020-05-12-CodeDeploy/
[Deploy] CodeDeploy로 자동배포 해보기
[Devops] Github Action을 사용한 Spring boot & gradle CI/CD 구축 - 3
본 포스팅은 '스프링 부트와 AWS로 혼자 구현하는 웹 서비스, 이동욱'의 내용을 기반으로 작성한 내용입니다. Github Action을 사용한 Spring boot & gradle CI/CD 구축 - 1 Github Action을 사용한 Spring boot & gradle CI/CD 구축 - 2 Github Action을 사용한 Spring boot & gradle CI/CD 구축 - 3 Github Action을 사용한 Spring boot & gradle CI/CD 구축 - 4 배포 시스템인 codedeploy를 통해 ec2 instance에 배포를 가능하게 하는 작업을 설정한다.
[Devops] Github Action을 사용한 Spring boot & gradle CI/CD 구축 - 3
https://stalker5217.github.io/devops/github_action_ci_cd_3/
[Devops] Github Action을 사용한 Spring boot & gradle CI/CD 구축 - 3
[AWS] Load-Balancer, CodeDeploy, Docker로 CI/CD 하기
이번 글에서는 현재 진행하고 있는 프로젝트 에서 무중단 자동화 배포를 하는 과정에 대해서 정리를 해보겠습니다.대신 EC2 생성(jar 배포) 등등 세세한 부분까지 다루지는 않고 큰 부분들만 다루어보겠습니다. (그래서 이 글은 따라하면서 보기는 애매할 수 있어 실습을 해보고 싶다면 제 블로그 다른 AWS 관련 글 들을 많이 참고해주세요. 이 글은 그냥 이렇게 했구나 하고 보기만 하는!)
[AWS] Load-Balancer, CodeDeploy, Docker로 CI/CD 하기
https://devlog-wjdrbs96.tistory.com/345
[AWS] Load-Balancer, CodeDeploy, Docker로 CI/CD 하기

Back-End Infra Architecture

notion image

구성

  • Github actions (java with gradle)
  • AWS S3
  • AWS RDS
  • AWS EC2 (Ubuntu 20.04 LTS)
  • AWS Code Deploy
  • Docker
  • NGINX
  • AWS Certificate Manager
  • AWS Route 53
  • AWS Elastic Load Balancer (Application Load Balancer L7)

배포 순서

main branch로 push 했을 때의 배포 과정입니다.
  1. Github Repository의 main branch로 push를 합니다.
  1. github action에 적용된 Java with Gradle workflow가 실행되고 build가 됩니다.
  1. build된 결과물 jar 파일을 AWS S3에 저장합니다.
  1. Code Deploy를 통해 ec2 instance에 실행되고 있는 docker conatiner로 Spring Boot를 실행합니다.

접근

  1. 배포 서버
    1. Client 는 https://api.jungdam.tk 를 통해 접근합니다.
    2. Route 53에 적용된 HTTPS 인증서를 확인하여 HTTPS 접근이 가능해집니다.
    3. Application Load Balancer를 통해 ec2 instance로 라우팅 되고 원하는 리소스를 응답 받습니다.
  1. 테스트 서버
    1. Client는 https://test-api.jungdam.tk 를 통해 접근합니다.
    2. Route 53에 적용된 HTTPS 인증서를 확인하여 HTTPS 접근이 가능해집니다.
    3. Application Load Balancer를 통해 ec2 instance로 라우팅 되고 원하는 리소스를 응답받습니다.
 

📝 TODO

CI/CD

Spring Boot (Gradle) Repository 만들기
Github Actions 만들기 ← 프로젝트 Repo 에도 적용해야함
AWS IAM을 생성하여 외부 접근 허용
AWS S3 설정 후, Github Secret 설정 ← 프로젝트 Repo 에도 적용해야함
Github Workflow에 s3로 보내는 job 적용
S3로 파일보내기
AWS IAM 역할을 만들어 S3 ↔ EC2 와 연결하기
역할 만들기
EC2 생성
EC2 IAM 역할 수정
EC2 재부팅
EC2 instance에 codedeploy 설치 (aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/install . --region ap-northeast-2)
CodeDeploy를 위한 IAM 역할 생성
CodeDeploy Application 생성하기
배포 그룹 생성
SpringBoot 프로젝트 폴더에 appspec.yml 설정
ec2 환경에 디렉토리 생성 /home/ubuntu/app/deploy
github workflow deploy job 추가
Code Deploy 설정하여 ec2로 파일 전송까지 해보기

Docker Env

EC2 Docker 설치 및 환경 셋팅
Code Deploy로 부터 Docker Container 만들어 실행시켜보기

Request & Response

Route 53에 DNS등록하기
HTTPS 인증서 적용
NGINX Reverse Proxy Setting

More

RDS 설정
S3 image 파일 설정
Front End 정적파일 배포를 위한 Github workflow 적용