💁♂️ 들어가기 전
안녕하세요. 오늘은 AWS에서 제공해주는 EB(Elastic Beanstalk)에 대해서 알아볼거에요. 알아보기 전에 우선 EB(Elastic Beanstalk)란 무엇일까요? EB는 배포 자동화 서비스라고 생각하면 쉬워요. EB는 처음 환경 구성만 해주면 EC2를 자동으로 만들어주기 때문이에요.
🎈 Elastic Beanstalk 생성
1. IAM 생성
먼저 EB를 생성하기에 앞서 IAM 역할을 생성하도록 할게요. 이 작업을 왜 하냐면 EB 생성 단계에서 EC2에 대한 역할, EB에 대한 역할을 내놓으라고 하기 때문에 미리 만들어 주는 거에요.
그럼 일단 Elastic Beanstalk에 대한 역할부터 만들어줄게요.
'역할 생성' 버튼을 누르면 위와 같은 화면이 나와요. 신뢰할 수 있는 엔터티 유형은 EB가 AWS 서비스니까 AWS 서비스를 선택해주고 사용 사례는 EC2로 선택해줘요. 그리고 '다음' 누르면 됩니다.
그 다음 아래와 같은 정책을 추가해주세요. 이름이 좀 길어서 밑에 남겨둡니다.
- AWSElasticBeanstalkEnhancedHealth
- AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
이 정책에 대해서 하나하나 설명하려면 아마존을 진짜 깊게 제대로 공부해야하기 때문에 각각에 대한 정책 설명은 건너뛰도록 할게요. 공부하고 싶은 분들은 공부하셔도 되는데 많이 어려울 겁니다. (공부해보는 것도 나쁘지 않아요)
그러고 이름과 추가한 정책과 신뢰할 수 있는 엔터티를 봐야하는데 이름은 제발 막 이상하게 a, b 이런 식으로 하지마세요. 그러고 신뢰 관계를 잘봐야하는데 자, 우리가 EB에 대한 역할를 만들고 있죠? 근데 지금 신뢰 관계에 EC2에 대한 관계만 있어요.
이 뜻은 'EC2를 위한 역할이 된다'이 말입니다. 그래서 편집을 눌러 바꿔줘야 하는데 아마존이 프론트엔드 코딩 잘못했는지 편집을 누르면 이상한 화면이 나와요ㅋㅋㅋ 일단 역할 생성한 다음에 바꾸도록 할게요.
일단 역할은 생성됐네요. 정책 확인하시고 신뢰 관계로 넘어갑니다.
이 화면이 신뢰 관계 편집 화면입니다. 아래와 같이 편집해주도록 할게요.
- elasticbeanstalk.amazonaws.com
이걸 Service 쪽에 넣어줍니다. EC2 제거하고요.
그럼 이제 해당 역할은 EB에 대한 역할로 만들어진 겁니다.
그 다음으로 EC2에 대한 역할을 만들면 되는데 이건 위 방법과 똑같은 방법으로 진행하면 됩니다. 제가 정책만 알려드릴께요. 그리고 EC2 만들 때 신뢰 관계는 편집 안하셔도 됩니다. 기본적으로 EC2가 신뢰 관계로 포함되어 있으니까요.
- AWSElasticBeanstalkMulticontainerDocker
- AWSElasticBeanstalkWebTier
- AWSElasticBeanstalkWorkerTier
복사/붙어넣기 하셔서 만드시면 됩니다!
2. EB(Elastic Beanstalk) 생성
애플리케이션 이름은 실제 프로젝트 이름 작성해주시면 됩니다.
필자는 Java를 사용해서 Spring 프로젝트를 만들기 때문에 플랫폼은 Java로 선택할게요. 다른 언어로 만드시면 그 언어에 맞는 플랫폼을 선택하시면 됩니다.
위에서 제일 중요한 '사전 설정'! 이건 반드시 '사용자 지정 구성'으로 선택해주세요. 단일 인스턴스는 EC2 하나만 올릴 수 있을 것 같지 않나요? 우리는 무중단 배포를 하고 싶은데 하나면 어떡하나..
그 다음! 드디어 우리가 아까 만든 IAM 역할을 사용할 때가 왔어요! '기존 서비스 역할'에는 EB에 대한 역할을 선택하시고, 'EC2 인스턴스 프로파일'에는 EC2에 대한 역할을 선택하시면 됩니다. 아, 그리고 EC2 접속을 위해 EC2 키 페어도 반드시 필요합니다!!
VPC는 전 포스팅 때 만든 걸 선택해주시고 인스턴스 설정에서 '퍼블릭 IP 주소'는 반드시 '활성화됨'으로 체크해주세요!
서브넷은 퍼블릭으로 된 서브넷을 선택해주세요! 그리고 왜 2개를 만들라고 했냐하면 EB가 최소 2개 이상은 내옿으라고 합니다. 왜냐하면 "하나가 안되면 어떡할래?"라는 것 때문에 그렇습니다. 하나가 안되면 예비용으로 받았던 또 하나를 사용하겠죠. 1개만 주면 EB가 거부합니다. 꼭 2개 이상을 주세요!
보안 그룹(Security Group)은 VPC 포스팅할 때 만들었던 보안 그룹으로 선택해줍니다.
'환경 유형'을 꼭 '밸런싱된 로드'로 선택해주세요!! 그리고 꼭 인스턴스 최솟값은 1, 최댓값은 2로 설정해주세요! (EC2 1개만 올릴 때 기준입니다) 만약 2개를 올리고 싶다고 한다면 최솟값은 2, 최댓값은 4로 설정해주세요. 무중단 배포이기 때문에 이렇게 진행하는 겁니다.
여기서 함정이 있어요!! 인스턴스 유형에 t3.small 모델인데 이건 돈 나갑니다. 반드시 제거해주세요! 돈 나가기 싫으면.
그 다음 '프로세스'를 건드려야 합니다. 이건 잘 생성됐는지 확인 차원에서 EB가 GET 요청을 보내 확인합니다. 그렇기에 경로를 바꿔줘야 하는데요. '/'는 보통 홈으로 사용되기 때문에 아래와 같이 /health로 바꿔주겠습니다.
그 다음 단계로 넘어가서 모니터링에서 '강화됨'으로 선택해주세요. 기본은 진짜 서버가 터졌는지 안터졌는지 그것만 알려줍니다. 강화됨은 왜 터졌는지까지 나오기 때문에 '강화됨'이 좋습니다.
관리형 업데이트는 몇분마다 업데이트할 건지 묻는 건데 체크해주지 마세요!! 체크 X
그리고 이 과정이 제일 중요한데 '추가 배치을 위한 롤링'을 선택해주세요. 설명드리자면 기존 EC2가 있는데 또 다시 배포를 한다고 가정하면 그 시간동안은 서버가 죽는 것이기 때문에 두번째 EC2가 정상적으로 돌아가면 그 때 기존 EC2를 두번째 EC2로 바꿔치기 하는겁니다.
Spring Boot 사용자이면 8080 포트로 뚤어줍니다.
마지막으로 검토해보시고 '제출'을 누르시면 5분안에 생성이 됩니다. 5분 후 다시 보면
환경이 잘 구성된 것을 볼 수 있고 EC2에 가보면
저는 건든 적이 없는데도 생성이 되었어요! 진짜 참으로 신기합니다ㄷㄷ
이상으로 EB에 대한 개념과 생성 실습에 대한 강의(?)는 마치도록 하겠습니다. 실습 단계가 너무 많네요ㅎㅎ 수고하셨습니다ㅎㅎ 모르는 부분이나 헷갈리는 부분 있으시면 댓글로 남겨주세요! 친절히 답변드리겠습니다. 😊
'🐳 DevOps' 카테고리의 다른 글
[인프라] Elastic Beanstalk에 도메인 + Https 적용하기 (0) | 2025.04.29 |
---|---|
[CI/CD] CI/CD 파이프라인 구축 (0) | 2025.04.27 |
[인프라] AWS IAM(Identity and Access Management)이란? (0) | 2025.04.25 |
[인프라] AWS VPC 생성 실습 (0) | 2025.04.23 |
[인프라] AWS VPC 관련 개념 정리 (0) | 2025.04.23 |