인프라

쉽고 간단한 백엔드 인프라, 배포부터 보안까지 (1) - AWS Elastic Beanstalk + Amazon Route 53 + ACM + 가비아 + GitHub Actions(CI/CD) + Amazon RDS(MySQL) 설명

ppaekkom 2023. 9. 16. 17:10

https://github.com/Hi-Kitty/Hi-kitty-backend

 

GitHub - Hi-Kitty/Hi-kitty-backend: 블록체인 기반 길고양이 기부 플랫폼

블록체인 기반 길고양이 기부 플랫폼. Contribute to Hi-Kitty/Hi-kitty-backend development by creating an account on GitHub.

github.com


목차

    서론

    3명에서 2주 동안 토이 프로젝트로 기부 플랫폼을 수행했던 적이 있다. 기획 1명, 프론트 엔드 1명, 백엔드 1명으로 총 3명으로 팀을 구성하였다. 

    2주라는 짧은 시간동안 구현까지 다 해야 했기 때문에 인프라를 최대한 신경을 덜 쓰면서 백엔드 구현을 해야 했다.

    이번 기회에 토이 프로젝트를 진행하는 다른 사람들도 이러한 방법으로 하면 좋을 것 같아서 공유한다.

    첫 번째로 각 서비스에 대한 최소한의 설명을 적었다.

    설명이 필요 없는 경우 다음 챕터로 바로 넘어가면 된다.

     

    인프라 아키텍처

    인프라 아키텍처

     

    AWS

    aws.amazon.com

    Azure와 Naver Cloud 등 다른 클라우드 서비스들도 있지만 이전에 AWS 자격증을 취득하면서 익숙한 클라우드 서비스를 선택하게 되었다.

     

    AWS Elastic Beanstalk

    AWS Elastic Beanstalk

    AWS의 PaaS 중 하나이다. 

    즉 애플리케이션을 구축, 실행 및 관리하는데 필요한 플랫폼을 제공하는 서비스이다.

    애플리케이션 코드를 업로드하기만 하면 AWS Elastic Beanstalk에서 제공하는 서비스에서 리소스 프로비저닝, 로드 밸런싱, 자동 크기 조정 및 모니터링 같은 세부 정보를 자동으로 처리한다.

    아래 설명은 AWS Elastic Beanstalk 기능이다.

    • 애플리케이션 플랫폼 선택: 웹 애플리케이션 배포를 위해 하나의 언어에 국한하지 않고 Java, .NET, Node.js, PHP, Ruby, Python, Go 및 Docker를 이용할 수 있다.
    • 모니터링: 애플리케이션의 상태를 모니터링하고 관리하기 위한 통합된 사용자 인터페이스(UI)를 제공한다.
    • 확장: Elastic Load Balnancing 및 Auto Scaling을 사용하여 애플리케이션의 특정 요구사항에 따라 애플리케이션을 자동으로 확장 및 축소할 수 있다.
    • 사용자 지정: 원하는 Amazon EC2 인스턴스 유형 등 애플리케이션에 가장 적합한 AWS 리소스를 자유롭게 선택할 수 있다.

    이 외에도 업데이트 및 관리 규정 준수 등 다양한 기능을 제공한다.

    가격

    애플리케이션을 저장하고 실행하기 위해 생성한 AWS 리소스에 대해서만 비용을 지불하면 된다.

    그래서 무료로 사용하고 싶으면 AWS EC2 인스턴스는 t2.micro 또는 t3.micro 인스턴스 타입으로 고정하고 인스턴스 수는 1개로 고정시켜야 된다.

     

    AWS Certificate Manager(ACM)

    AWS Certificate Manager (ACM)

    AWS Certificate Manager(ACM)는 AWS 웹 사이트와 애플리케이션을 보호하는 퍼블릭 및 프라이빗 SSL/TLS 인증서와 키를 만들고, 저장하고, 갱신하는 복잡성을 처리한다.

    SSL과 TLS 모두 서버, 애플리케이션, 사용자 및 시스템 간의 데이터를 암호화하는 통신 프로토콜이다. 

    즉 웹 통신 프로토콜인 HTTP의 보안 버전인 HTTPS를 사용하기 위해 필요한 서비스이다.

    HTTPS에서 사용

    • 웹 사이트에 연결하기 전에 브라우저는 TLS를 사용하여 웹 사이트의 TLS 또는 SSL 인증서를 확인한다.
    • TLS 및 SSL 인증서는 서버가 현재 보안 표준을 준서하고 있음을 보여준다.
    • 브라우저 주소 표시줄에서 인증서에 대한 증거를 찾을 수 있다.
    • 인증되고 암호화된 연결은 http:// 대신 https://를 표시한다.
    • 추가된 s는 secure, 즉 보안을 의미한다.

    가격

    무료 서비스이다.

     

    Amazon Route 53

    Amazon Route 53

    가용성과 확장성이 뛰어난 도메인 이름 시스템(DNS) 웹 서비스이다. DNS는 인터넷에서 도메인 이름을 IP 주소로 해석하는 역할을 한다. Route 53는 사용자 요청을 AWS 또는 온프레미스에서 실행되는 인터넷 애플리케이션에 연결한다.

    Amazon Route 53의 기능으로 도메인 등록, DNS 관리, 고가용성과 확장성, 트래픽 관리, 상태 확인 및 경고 등이 있다.

    가격

    처음 25개 호스팅 영역의 경우 월별 호스팅 영역당 0.50 USD

    추가 호스팅 영역의 경우 월별 호스팅 영역당 0.1 USD

    즉, 무료가 아니다.

     

    가비아

    domain.gabia.com

    가비아는 IaaS형 클라우드 서비스와 PaaS, 그리고 SaaS형 그룹웨어 솔루션 등 비즈니스 IT에 필요한 서비스 전반을 제공하는 서비스이다.

    그중에서 도메인이 가장 유명하다.

    가비아 사이트를 이용하여 도메인을 구매할 수 있다.

    가격

    가격 검색

    도메인 별로 가격이 다 다르다.

    무료가 아니다.

     

    GitHub Actions

    Github Actions

    GitHub Actions를 사용하여 리포지토리에서 바로 소프트웨어 개발 워크플로를 자동화, 사용자 지정 및 실행한다. CI/CD를 포함하여 원하는 작업을 수행하기 위한 작업을 검색, 생성 및 공유하고 완전히 사용자 정의된 워크플로에서 작업을 결합할 수 있다.

    Jenkins와 달리 서버를 직접 구상하지 않고 손쉽게 워크플로를 생성할 수 있다.

     

    GitHub Actions의 구성 요소

    GitHub Actions 워크플로를 구성하여 저장소에서 이벤트가 발생할 때(PR, Push 어떠한 이벤트) 트리거 되도록 설정할 수 있다. 워크플로는 하나 이상의 작업(job)을 포함하며 이 작업은 순차적으로 또는 병렬로 실행될 수 있다. 각 작업은 VM이나 컨테이너 내에서 실행되며, 하나 이상의 스텝(step)을 가지며 이 스텝은 사용자가 정의한 스크립트를 실행하거나 워크플로우를 간소화할 수 있는 재사용 가능한 확장인 액션(action)을 실행할 수 있다.

    docs.github.com - 워크플로

    워크플로(WorkFlows)

    워크플로는 하나 이상의 작업(job)을 실행하는 구성 가능한 자동화 프로세스이다.

    워크플로는 저장소에 체크인된 YAML 파일로 정의되며, 저장소 내의 이벤트에 의해 트리거 될 때 실행되거나 수동으로 트리거하거나 정의된 일정에 따라 실행될 수 있다.

    워크플로는 저장소의 .github/workflows 디렉터리에 정의되며, 하나의 저장소에는 여러 개의 워크플로우가 있을 수 있으며 각각 다른 작업 집합을 수행할 수 있다. 예를 들어, 풀 리퀘스트를 빌드하고 테스트하는 워크플로, 릴리스가 생성될 때마다 애플리케이션을 배포하는 다른 워크플로 등을 가질 수 있다.

     

    이벤트(Events)

    이벤트는 워크플로 실행을 트리거하는 저장소 내의 특정 활동이다. 예를 들어 GitHub에서 누군가가 풀 리퀘스트를 생성하거나 이슈를 열거나 커밋을 저장소에 푸시할 때 발생할 수 있다. 또한 일정에 따라 워크플로를 트리거하거나 REST API에 게시하거나 수동으로 실행할 수도 있다.

     

    작업(Jobs)

    작업은 워크플로 내에서 실행되는 일련의 단계이다. 각 단계는 실행될 셸 스크립트이거나 실행될 액션 중 하나이다. 단계는 순서대로 실행하며 서로 종속적이다. 각 단계가 동일한 러너(runner)에서 실행되기 때문에 한 단계에서 다른 단계로 데이터를 공유할 수 있다. 예를 들어, 애플리케이션을 빌드하는 단계를 따르는 애플리케이션을  테스트하는 단계를 가질 수 있다.

    작업은 다른 작업과의 의존성을 구성할 수 있으며, 기본적으로 작업은 의존성이 없고 서로 병렬로 실행된다. 작업이 다른 작업에 의존하도록 구성하면, 해당 작업은 종속 작업이 완료될 때까지 대기한 다음 실행된다. 

     

    액션(Actions)

    액션은 Github Actions 플랫폼을 위한 사용자 정의 응용 프로그램으로, 복잡하지만 자주 반복되는 작업을 수행한다. 액션은 워크플로 파일에서 작성해야 하는 반복적인 코드 양을 줄이는 데 도움을 준다. 액션은 GitHub에서 Git 리포지토리를 가져오거나 빌드 환경에 맞는 올바른 도구 체인을 설정하거나 클라우드 공급자에 대한 인증을 설정하는 등 복잡한 작업을 수행할 수 있다.

    액션은 직접 작성하거나 GitHub Marketplace에서 워크플로에 사용할 액션을 찾을 수 있다.

     

    러너(Runners)

    러너는 워크플로가 트리거 될 때 해당 워크플로를 실행하는 서버이다. 각 러너는 한 번에 하나의 작업을 실행할 수 있다. GitHub은 Ubuntu Linux, Microsoft Windows 및 MacOS 러너를 제공하여 워크플로우를 실행할 수 있게 하며, 각 워크플로 실행은 새로 생성된 가상 머신에서 실행한다.

     

    Next Step

    https://ppaekkomlog.tistory.com/18

     

    Amazon Elastic Beanstalk + Amazon Route 53 + ACM + 가비아 + Github Actions(CI/CD) + Amazon RDS(MySQL)으로 백엔드 인프

    https://github.com/Hi-Kitty/Hi-kitty-backend GitHub - Hi-Kitty/Hi-kitty-backend: 블록체인 기반 길고양이 기부 플랫폼 블록체인 기반 길고양이 기부 플랫폼. Contribute to Hi-Kitty/Hi-kitty-backend development by creating an account

    ppaekkomlog.tistory.com


    참고

    https://aws.amazon.com/ko/elasticbeanstalk/details/

     

    AWS Elastic Beanstalk 제품 세부 정보 – Amazon Web Services(AWS)

     

    aws.amazon.com

    https://docs.aws.amazon.com/ko_kr/acm/latest/userguide/acm-overview.html

     

    AWS Certificate Manager이란 무엇입니까? - AWS Certificate Manager

    AWS Certificate Manager이란 무엇입니까? AWS Certificate Manager(ACM)는 AWS 웹 사이트와 애플리케이션을 보호하는 퍼블릭 및 프라이빗 SSL/TLS X.509 인증서와 키를 만들고, 저장하고, 갱신하는 복잡성을 처리합

    docs.aws.amazon.com

    https://aws.amazon.com/ko/compare/the-difference-between-ssl-and-tls/

     

    SSL과 TLS 비교 - 통신 프로토콜 간의 차이점 - AWS

    SSL과 TLS 모두 서버, 애플리케이션, 사용자 및 시스템 간의 데이터를 암호화하는 통신 프로토콜입니다. 네트워크를 통해 연결된 두 당사자를 인증하므로 데이터를 안전하게 교환할 수 있습니다.

    aws.amazon.com

    https://aws.amazon.com/ko/route53/

     

    Amazon Route 53 | DNS 서비스 | AWS

    Amazon Route 53는 가용성과 확장성이 뛰어난 도메인 이름 시스템(DNS) 웹 서비스입니다. Route 53는 사용자 요청을 AWS 또는 온프레미스에서 실행되는 인터넷 애플리케이션에 연결합니다.

    aws.amazon.com

    https://docs.github.com/ko/actions

     

    GitHub Actions 설명서 - GitHub Docs

    GitHub Actions를 사용하여 리포지토리에서 바로 소프트웨어 개발 워크플로를 자동화, 사용자 지정 및 실행합니다. CI/CD를 포함하여 원하는 작업을 수행하기 위한 작업을 검색, 생성 및 공유하고 완

    docs.github.com

    https://docs.github.com/ko/actions/learn-github-actions/understanding-github-actions

     

    GitHub Actions 이해 - GitHub Docs

    GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deploy merged

    docs.github.com

     

    반응형