0. 목표 및 구조
1. React & Spring Boot
2. AWS S3/EC2
3. 배포 자동화 - Github Actions & AWS CodeDeploy
4. 정리
4. 정리
나는 업무 내용을 확장해서 개발 공부를 하는 편이다. 뭔가.. 버프를 받는 느낌이기 때문이다.
근데 이번 프로젝트를 하고 나니 미지의 기술도 학습해야 할 필요성을 체감했다.
- 시작할 때 막막했던 만큼 완성하면 성취감이 크다
- 물어볼 동료가 없으니 혼자 공식 문서, 사이트 엄청 뒤져보고 이거저거 해봐야 함
- 일할 땐 혹시 문제 생길까봐 조심하던 부분도 막 다룰 수 있다 막 다루면서 배우는 게 있음
- 새로 알게 된 지식이 주는 자극
0. 목표 및 구조
1. React & Spring Boot
2. AWS S3/EC2
3. 배포 자동화 - Github Actions & AWS CodeDeploy
4. 정리
과정
한 달 걸렸다.
1. 개발 환경 설정
- VSCode, node.js, npm, STS 등 설치
2. 원하는 구조, 기술로 프로젝트를 만들 수 있을지 조사
- 화면은 React 서버 API는 Spring Boot로 분리, Git, 배포 자동화, AWS 사용
- 개인적으로 이 과정에서 진도가 너무 안 나갔다. 지금은 대략적인 흐름을 그릴 수 있지만 이 당시에는 각 기술의 X, Y, Z 좌표가 다르게 느껴져 흐름에 대한 감이 안잡혔다.
- 무턱대고 아무 튜토리얼이나 따라 보지 말고 기준을 정해서 차근차근히 분석해보면 전혀 어렵지 않을듯하다.
3. React, Spring Boot 프로젝트 생성
- React와 Spring Boot 학습이 목표가 아니었기에 세세한 기능보다는 통신 과정만 볼 수 있으면 되는 튜토리얼이 필요했음
- 참고한 포스트 이 포스트의 React Router가 최신 버전이 아니다. v6(현재 최신 버전)로 어떻게 적용하긴 했지만 코드가 전혀 깔끔하지 않다. 주의 필요.
- DB는 MySQL
4. React, AWS S3, 배포 자동화
- VSCode Git 연동
- AWS S3 정적 웹 호스팅 버킷 생성 및 IAM 사용자/권한 추가
- Github Actions Workflow/Secrets 등 배포 자동화 설정. 참고한 포스트
- 배포해주니 버킷 웹 사이트 엔드포인트 주소 들어가면 화면 나옴
5. Spring Boot, AWS EC2, 배포 자동화
- 인스턴스(ubuntu) 생성
- 저장소용 S3 버킷 생성(이 때 정적 웹 호스팅한 버킷 같이 쓰다가 뒤늦게 분리함. 미리 생성하는게 좋다. )
- 보안 그룹의 인바운드 규칙 설정
- 탄력적 IP 주소 할당 받음
- 인스턴스에 PuTTY로 SSH 접속
- 인스턴스에 jdk, CodeDeploy-agent, MySQL 설치
- EC2용 IAM 역할 생성 및 인스턴스에 적용
- CodeDeploy용 IAM 역할 및 CodeDeploy 생성
- Github Actions Workflow/Secrets 설정
- CodeDeploy AppSpec 설정
- AppSpec에서 사용할 쉘스크립트 작성
- React 프로젝트에서 Spring Boot API 호출 url인 localhost를 인스턴스 ip 주소로 변경
6. AWS EC2에 MySQL 설치
- 외부 접속 허용 설정
7. 배포는 성공, 서비스 실행은 실패
- 인스턴스 확인해보니 프로세스 자체가 돌아가고 있지 않음
- Spring Boot 외부 설정 파일 처음부터 다시 설정.
- MySQL 설정 파일에 외부 접속 허용 설정이 저장이 안되어있었음. 다시 저장.
- 다 해봐도 안됨. 인바운드 규칙에 MySQL 추가함
8. 성공
개선할 부분
- S3 버킷 정적 웹 호스팅용, 저장소용 분리
- 인스턴스 재부팅 시 스크립트 자동 실행 설정
- 테스트 코드 추가
- 인스턴스에 설치된 MySQL를 AWS RDS로 이동
'Project' 카테고리의 다른 글
1. JAVA로 아주 간단한 WAS와 Spring MVC Framework 만들기 (0) | 2023.01.04 |
---|---|
커피 주문 서비스를 객체 지향으로 설계해보기 with Java (0) | 2022.10.19 |
3. AWS + Spring Boot + React 프로젝트 근데 이제 배포 자동화를 곁들인 (0) | 2022.03.25 |
2. AWS + Spring Boot + React 프로젝트 근데 이제 배포 자동화를 곁들인 (0) | 2022.03.24 |
1. AWS + Spring Boot + React 프로젝트 근데 이제 배포 자동화를 곁들인 (0) | 2022.03.23 |