아마존 웹서비스를 이용한 WebApp을 제작하였습니다.
ElasticBeanStalk,Simple Email Service,WorkMail, Nginx, SpringBoot 등을 통해 만들었으며
https://github.com/Djunnni/Attendee/ 에서 코드를 공유합니다.
for description SpringBoot WebApp using Amazon Web Service.
ElasticBeanStalk,Simple Email Service,WorkMail, Nginx, SpringBoot and so on
1. ElasticBeanStalk을 이용한 출석 관리 “Attendee” WebApp 제작
전북대학교 컴퓨터공학부 이동준
djunnni@gmail.com
Attendee
2019. 12. 10
2. Index
1. 프로젝트 소개
1-1. 목적
1-2. UI / UX
2. AWS Service 소개
2-1. 서비스 동작 방식
2-2. ElasticBeanStalk
2-3. Simple Email Service
2-4. WorkMail
3. Design
3-1. ER Data Model
3-2. Use Case Diagram
3-3. Flow Chart
4. Programming
4-1. SpringToolSuite4 이용한 개발 과정
5. Deploy
5-1. ElasticBeanstalk을 통한 배포
5-2. 배포 중 발생한 문제점과 해결방법
6. Testing
6-1. Google Search Console Mobile Test
6-2. Apache AB Test
6-3. Auto Scaling Test
7. Process Document
7-1. Gitbook
7-2. Github
Attendee
4. 프로젝트 소개
Attendee
1-1. 목적
Khub에서 사용하던 출석체크 !!
“ 이런 게 있으면 좋겠다 ”
A4용지에 한번 사용하고 바로 버린 출석부 !!
“ 뽑기도 귀찮고 이제 종이 낭비 그만하고 싶어
그래서 만들었습니다.
소모임, 스터디 조, 동아리에서 사용할 수 있는 Attendee
9. AWS Service 소개
Attendee
2-1. 서비스 동작 방식
AWS Cloud
Availability Zone – 2a
VPC WebServer Public WebServer Public
Database Private
Amazon EC2
Auto Scaling
Availability Zone – 2c
Auto Scaling group
Amazon RDS
(Multi AZ)
Instance
Spot InstanceSpot Instance
Amazon Simple
Email Service
Seoul Region US-EAST-
1 Region
Elastic Beanstalk container
S3 Bucket
CloudWatch
Amazon WorkMail
10. Attendee
2-2. Elastic Beanstalk
AWS Service 소개
AWS Elastic Beanstalk는 Apache, Nginx, Passenger, IIS와 같은
친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게
배포하고 조정할 수 있는 서비스입니다.
코드를 업로드하기만 하면 Elastic Beanstalk가 용량 프로비저닝,
로드 밸런싱, Auto Scaling부터 시작하여 애플리케이션 상태 모
니터링에 이르기까지 배포를 자동으로 처리합니다.
Elastic Beanstalk는 추가 비용 없이 애플리케이션을 저장 및 실
행하는 데 필요한 AWS 리소스에 대해서만 요금을 지불하면 됩
니다.
11. Attendee
2-3. Simple Email Service
AWS Service 소개
애플리케이션 개발자가 마케팅, 알림 및 트랜잭션 이메일을 발송하는 데 도움이 되도록 설계된
“클라우드 기반 이메일 발송 서비스” 입니다.
https://aws.amazon.com/ko/ses/
12. Attendee
2-4. Work Mail
AWS Service 소개
안전한 관리형 비즈니스 이메일 및 달력 서비스입니다.
사용자에게 원하는 클라이언트 애플리케이션을 사용하거나 웹 브라우저를 통해 직접 이메일, 연락처 및 달
력에 원활하게 액세스할 수 있는 기능을 제공합니다.
https://aws.amazon.com/ko/workmail/?nc2=type_a
19. Programming
Attendee
4-1. SpringToolSuite4 이용한 개발 과정
Package
ml.attendee = AppApplication.class
aws.ses = 메일 전송과 내용 처리
controller = 웹 컨트롤러
domain = Entity 정의
encode = 인코딩용 class
repository = JPA 를 위한 DB repository
security = SpringSecurity
service = Transaction service
23. Programming
4-1. SpringToolSuite4 이용한 개발 과정
AWS SES(Simple Email Service) 서비스 연동과정
AWS 의 Credential을 얻는 부분이
골치였다.
https://djunnni.gitbook.io/springboot/2019-12-01
31. Deploy
Attendee
5-2. 배포 중 발생한 문제점과 해결방법
1. 초기 Time zone 이 GMT 로 되어 있어 한국과 9시간 차이가 났다. ( DB에서도 시간차 발생 )
해결방법 SpringBoot로 배포할 시 timezone에 대한 Setting을 아래처럼 하면 됨.
1) src/main/ebxtensions 만들기 2) pom.xml build에서 maven-war-plugin 추가 설정
3) 01-timezone.config를 다음과 같이 작성한다. 4) Maven project Update를 한다.
https://djunnni.gitbook.io/springboot/2019-12-05
32. Deploy
5-2. 배포 중 발생한 문제점과 해결방법
2. Port에 대한 Proxy 문제가 스프링 부트에 존재했다.
ElasticBeanstalk에서 SpringBoot는 AWS 로드 밸런서가 5000번으로 수신 대기 할 것으로 예상
단순 배포시에는 문제가 없지만, AutoScaling을 통해 하려고 하면 위 같은 문제가 발생
33. Deploy
5-2. 배포 중 발생한 문제점과 해결방법
Ebextensions에서 두개의 파일을 추가 했다.
1. 80 포트로 접근하면 자동으로 8080로 연결되게 끔
2. 5000 포트로 접근하면 자동으로 8080로 연결되게 끔
당연히 WebServer 보안그룹에서
8080번과 5000번을 열어두었다.