SlideShare a Scribd company logo
1 of 46
1
SW아카데미 2기
최종발표
5팀 <MyWeatherDiary>
FE 오동준
BE 김채운
Table of Contents
2
I. 개요
프로젝트 참여 인원 소개
프로젝트 소개
II. 프로젝트 설계
기술 스택
개발 툴
Cloud 설계도
III. 프로젝트 주요 기능
유저
일기
활동
IV. 기능 구현 방법
FE
BE
배포
V. SW아카데미 회고
오동준
김채운
VI. 시연 영상
3
개요
01
프로젝트 참여 인원 소개
프로젝트 소개
4
개요
프로젝트 참여 인원 소개
○ 오동준
○ 충남대학교 컴퓨터융합학부 4학
년 재학중
○ 프론트엔드 과정
○ 프론트엔드, 클라우드 담당
○ 김채운
○ 충남대학교 경영학과 졸업
○ 백엔드 과정
○ 백엔드, DB, Docker 담당
○ 홍성빈
○ 충남대학교 컴퓨터융합학부 재학중
○ 백엔드 과정 TA
○ 프로젝트 전반에 걸쳐서 많은 도움을
줌.
○ 박광수
○ 아이티센 그룹 cloit 책임 수석
○ 아이티센 기업 프로젝트 멘토
○ 클라우드 구축에 많은 도움을 줌.
5
개요
주제 선정 배경
귀찮음 MyData 익명성
일기를 쓰고 싶은 욕구는 있으나.
쓰지 않거나 중간에 포기
서비스가 종료되면, 내가 쓴 일기도 사라짐 `내 정보`를 제공하는 것에 부담
6
주제 선정 배경
프로젝트 설명
날씨 = 기분: 기분을 날씨로 표현하는 일기장
주요 컨셉
차별화 요소
간편함 Export
익명 보안
• 간편한 UI
• 기분/사진/코멘트를 선택적으로 입력
• 일기 작성 부담 완화
• Key만으로 일기장 접근
• 내 일기는 내 것
• 일기 다운로드 서비스
• 수익모델과 연결
• 사용자 정보를 받지 않는 완전한 익명서비스
• 서버도 사용자를 모름
• 서버에서 해킹이 어려운 Key 제공
• 개인정보가 유출될 일 없음
• 추후, 일기 내용 암호화 계획
7
프로젝트 설계
02
기술 스택
개발 툴
프로젝트 설계도
8
프로젝트 설계
기술 스택 : BE
개발 언어 / 라이브러리 테스트
JUnit5
DB
MySQL
Java 17 Spring Boot Spring data
JPA
Spring
Security
Restdocs
Infra
Amazon
EC2
Amazon
S3
9
프로젝트 설계
기술 스택 : FE
프로토타입
Figma
코드 규격 / 스타일
Prettier ESLint
개발 언어 / 라이브러리
Javascript React Redux Toolkit Emotion Axios React Router
Dom v6
배포
Amazon EC2
10
프로젝트 설계
개발 툴
FE
VSCode Vite
Yarn
Teamwork
BE
IntelliJ
Maven
Spring 카카오톡 Notion
Github
Postman
11
프로젝트 설계
Cloud 설계도
○ AWS를 사용한 2-Tier 시스템 구축
○ 비용문제로 NAT Gateway를 NAT Instance
로 대체
○ 과도한 리소스 사용을 방지하기 위하여
LoadBalancer, RDS, 이중화 서버 삭제
12
프로젝트 주요 기능
03
유저
일기
활동
13
프로젝트 주요 기능
유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out
key를 입력 후 로그인
14
프로젝트 주요 기능
유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out
Generate Key 선택
일기 주제를 입력 후
키 생성 클릭
키 생성 확인 및 복사
버튼을 눌러서 복사
15
프로젝트 주요 기능
유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out
이메일 입력 후 전송
버튼을 누르면 해당
이메일로 키 백업
16
프로젝트 주요 기능
유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out
Profile 탭을 눌러서
익명의 사용자 정보
확인
Avatar, nickname 모두
랜덤하게 생성
17
프로젝트 주요 기능
유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out
클릭
nickname과 일기 주제를 변경
변경된 정보
확인
18
프로젝트 주요 기능
유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out
일기장이
전부 사라짐
19
프로젝트 주요 기능
유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out
Log out 됨
20
프로젝트 주요 기능
일기 일기 추가 일기 조회 일기 수정 일기 삭제
New Diary
버튼을 클릭
일기 작성 후
작성 버튼 클릭
21
프로젝트 주요 기능
일기 일기 추가 일기 조회 일기 수정 일기 삭제
Diary 탭에서
내가 쓴일기
조회 가능
22
프로젝트 주요 기능
일기 일기 추가 일기 조회 일기 수정 일기 삭제
일기 마다 옆
에 붙어있는
수정 버튼 클
릭
23
프로젝트 주요 기능
일기 일기 추가 일기 조회 일기 수정 일기 삭제
일기 마다 옆
에 붙어있는
삭제 버튼 클
릭
24
프로젝트 주요 기능
활동 활동 내역 조회 활동 내역 저장
Activity 선택
Monthly,
Yearly 선택
25
프로젝트 주요 기능
활동 활동 내역 조회 활동 내역 저장
png로 일기
contribution
table을 스크린샷
가능
png, pdf로 내가
쓴 일기 내역 내보
내기 가능
26
기능 구현 방법
04
FE
BE
배포
27
기능 구현 방법
FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력
○ Store에 저장된 상태에 대한 직접적인 변경 방지
○ 상태를 업데이트 할 때는 무조건 action을 dispatch함.
○ 무분별한 상태 변경을 방지하여 여러 컴포넌트에 일관된 상
태 제공  버그 방지
28
기능 구현 방법
FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력
○ Props Drilling 현상 방지
○ 코드 유지 보수의 비용이 절약됨.
29
기능 구현 방법
FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력
○ Formik을 이용하여 Form 상태들 value를 추적
○ onSubmit 시 redux store를 update하는 Action
발생
30
기능 구현 방법
FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력
○ Modal, Snack bar, Tooltip 같은 다채로운 기능들
은 MUI에서 모두 가져다가 씀.
31
기능 구현 방법
FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력
○ jsPDF를 이용하여 PDF로 내보내기 기능 구현
32
기능 구현 방법
FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력
○ contribution table, 달력 등은 모두 직접 구현
33
기능 구현 방법
BE 도메인 관리 로그인 이미지 처리 Email 전송
○ Spring Data JPA를 활용해 CRUD 연산
○ Query 커스터마이징은 주로 Method query를 활용
○ DB는 Docker image: 기본 schema와 data는 init.sql
- 개발 시: docker image
- 배포 시: docker-compose
SpringDataJPA
34
기능 구현 방법
BE 도메인 관리 로그인 이미지 처리 Email 전송
○ Spring Security와 JWT로 로그인 구현
SpringSecurity
35
기능 구현 방법
BE 도메인 관리 로그인 이미지 처리 Email 전송
○ AWS S3를 이용한 이미지 처리
○ Client와 Base64로 인코딩된 문자열을 송/수신
○ AWS S3와 Byte array를 송/수신
AWS S3
36
기능 구현 방법
BE 도메인 관리 로그인 이미지 처리 Email 전송
Gmail
○ Gmail SMTP를 통해 전송
37
기능 구현 방법
배포 Cloud Domain Docker 프록시
○ Cloud는 AWS를 이용
○ 가장 최근에 배웠기에 가장 자세히
알고 무엇보다도 기업 멘토님께서
많이 도와주실 수 있는 CSP라서
선택
38
기능 구현 방법
배포 Cloud Domain Docker 프록시
○ gabia에서 호스팅 도메인 구입
(세일해서 1년에 1900원)
○ AWS Route 53에서 호스팅 영
역을 생성
○ 레코드 이름에 구매한 도메인 입력
○ 도메인과 서비스 중인 AWS
WEB EC2 IP를 연결
○ 가비아 도메인 관리에서 네임 서버
에 Route 53에서 알려주는 네임
서버 등록 후 실제 접속이 가능하
기까지 1일 기다림.
39
기능 구현 방법
배포 Cloud Domain Docker 프록시
○ FE와 BE모두 Dockerfile로 애플리케이션을 dockerize해서 Docker hub에 등록하여 AWS EC2 서버에서 다운받아서 동
작시키도록 함.
○ BE는 Jar 파일과 DB를 동시에 띄워야 하기 때문에 Docker-Compose를 이용하여 dockerize를 진행
40
기능 구현 방법
배포 Cloud Domain Docker 프록시
웹페이지 요청
API 요청
브라우저
FE 서버 BE 서버
○ 배포할 때 API 요청주소를 WAS 서버로 지정하면 요청 X
○ 요청주소는 WEB EC2 주소가 되고 vite에서 API 요청 중 proxy가 들어간 path가 존재하면 해당 API의 호스트를
WAS 서버로 변경해서 대신 요청을 날려줌.
Proxy
41
SW아카데미 회고
05
42
SW아카데미 회고
Problem
Try
Keep
- 온라인 수업 뿐만 아니라 오프라인 수업 병행.
- TA 특강: 실제 적용 기술 습득
- 기업 프로젝트에서 배운 내용을 팀 프로젝트에 적용
- 강의만으로는 알 수 없는 문제들 경험
- 모르면 언제든 물어볼 수 있는 환경(멘토님, TA님 등)
- 24시간 이용 가능한 교육실 및 다과
- 학습시간 보장: 배운 것을 제대로 학습하고 집중할 시간을 아카데미에서 보장
- 기업 프로젝트 일정 안내 시기: 고정된 시간을 미리 공지(2월 초), 학생들이 시간표 조정
- 컨텐츠 최신화: 영상을 다시 찍진 못하더라도, 영상에 사용되었으나 변경/삭제된 기술에 대해 안내
- FE 팀 형성: FE 간 협업
- 공지사항 정리: 카톡 공지사항, 스프레드 시트, SW아카데미 홈페이지 등
오동준 KPT 회고
- 벅찬 일정: SW 아카데미 온/오프라인 수업, 프로젝트, 학부수업 등
- 기업 프로젝트 상세 일정 안내 시기: 학부 시간표가 결정되는 기간에
비해 기업프로젝트의 수업 상세 날짜와 시간 공지기간이 많이 늦음
- 컨텐츠 노후: 2018년 기술, 변경/삭제된 것이 많음
- FE/BE 인원 비대칭으로 인한 FE 협업 부재
- 카톡 공지사항: 매일 올라오는 공지사항을 정리해둔 곳이 없어 불편
43
SW아카데미 회고
Problem
Try
Keep
- 빠른 피드백: 문제가 생겼을 때 연락이나 미팅이 빨랐음.
- 멘토링: 매주 멘토링을 통해 프로젝트 방향성을 논의
- 프론트 구현: 프론트 구현이 빨라, 백엔드도 열심히 따라감.
- 학습 소재의 다양함
- 데드라인 부재: 체계적인 구현 계획이 있었다면 조금 더 많은 부분
을 완성할 수 있지 않았을까 하는 아쉬움이 있다
- 시간 관리의 아쉬움: 여러 할 일들이 많아 시간 관리가 어려웠고,
팀 프로젝트에 많이 쏟지 못해 아쉬웠다.
- 초창기에 대략적인 데드라인을 세우고, 자주 미팅을 하면서 구체적인 스케줄을 잡아본다. (구현 속도 향상 기대)
- 개인적인 스케줄도 구체적으로 기록하여 시간관리를 한다.
김채운 KPT 회고
44
시연 영상
06
45
시연 영상
https://youtu.be/d2Zoiq-rFig
Thank you
46

More Related Content

What's hot

고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들Chris Ohk
 
심성환 개발자 포트폴리오
심성환 개발자 포트폴리오심성환 개발자 포트폴리오
심성환 개발자 포트폴리오Seonghwan Shim
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직Hoyoung Choi
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
아라한사의 스프링 시큐리티 정리
아라한사의 스프링 시큐리티 정리아라한사의 스프링 시큐리티 정리
아라한사의 스프링 시큐리티 정리라한사 아
 
신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판hyeonjae Cheon
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우NAVER D2
 
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성KwangSeob Jeong
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Web Services Korea
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)Brian Hong
 
gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!Alex Borysov
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기KwangSeob Jeong
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기Kiyoung Moon
 
포트폴리오 오경원
포트폴리오 오경원포트폴리오 오경원
포트폴리오 오경원Sio Oh
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 

What's hot (20)

고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
고려대학교 컴퓨터학과 특강 - 대학생 때 알았더라면 좋았을 것들
 
심성환 개발자 포트폴리오
심성환 개발자 포트폴리오심성환 개발자 포트폴리오
심성환 개발자 포트폴리오
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
아라한사의 스프링 시큐리티 정리
아라한사의 스프링 시큐리티 정리아라한사의 스프링 시큐리티 정리
아라한사의 스프링 시큐리티 정리
 
신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
 
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
포트폴리오 오경원
포트폴리오 오경원포트폴리오 오경원
포트폴리오 오경원
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 

Similar to 5조_최종발표.pptx

SJBoard Project Portfolio
SJBoard Project PortfolioSJBoard Project Portfolio
SJBoard Project PortfolioJuyoungKang7
 
JH'S Portfolio
JH'S PortfolioJH'S Portfolio
JH'S PortfolioJ.H Ahn
 
포트폴리오 김규하
포트폴리오 김규하포트폴리오 김규하
포트폴리오 김규하GyooHa Kim
 
제품소개서 (Pastel editor)
제품소개서 (Pastel editor)제품소개서 (Pastel editor)
제품소개서 (Pastel editor)Kevin Hyun
 
제품소개서( Pastel Editor)
제품소개서( Pastel Editor)제품소개서( Pastel Editor)
제품소개서( Pastel Editor)Kevin Hyun
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기Mijeong Park
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초Kwangyoun Jung
 
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서ServerDevCamp
 
Twincamp 소개자료 Ver3.2
Twincamp 소개자료 Ver3.2Twincamp 소개자료 Ver3.2
Twincamp 소개자료 Ver3.2pcwook
 
서비스도움말 캠프관리
서비스도움말 캠프관리서비스도움말 캠프관리
서비스도움말 캠프관리pcwook
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptxssuserf875e6
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기Seokjae Lee
 
웹사이트기획 및 관리
웹사이트기획 및 관리웹사이트기획 및 관리
웹사이트기획 및 관리봉조 김
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기Donghyun Cho
 
스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기Sunyoung Shin
 
Abim ipd studies draft 1 (final version)
Abim ipd studies draft 1 (final version)Abim ipd studies draft 1 (final version)
Abim ipd studies draft 1 (final version)Tae wook kang
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220Seomgi Han
 

Similar to 5조_최종발표.pptx (20)

Web micro blog
Web micro blogWeb micro blog
Web micro blog
 
SJBoard Project Portfolio
SJBoard Project PortfolioSJBoard Project Portfolio
SJBoard Project Portfolio
 
JH'S Portfolio
JH'S PortfolioJH'S Portfolio
JH'S Portfolio
 
포트폴리오 김규하
포트폴리오 김규하포트폴리오 김규하
포트폴리오 김규하
 
제품소개서 (Pastel editor)
제품소개서 (Pastel editor)제품소개서 (Pastel editor)
제품소개서 (Pastel editor)
 
제품소개서( Pastel Editor)
제품소개서( Pastel Editor)제품소개서( Pastel Editor)
제품소개서( Pastel Editor)
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
 
Twincamp 소개자료 Ver3.2
Twincamp 소개자료 Ver3.2Twincamp 소개자료 Ver3.2
Twincamp 소개자료 Ver3.2
 
서비스도움말 캠프관리
서비스도움말 캠프관리서비스도움말 캠프관리
서비스도움말 캠프관리
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
 
웹사이트기획 및 관리
웹사이트기획 및 관리웹사이트기획 및 관리
웹사이트기획 및 관리
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기개발자, 성장하는 '척' 말고, 진짜 성장하기
개발자, 성장하는 '척' 말고, 진짜 성장하기
 
스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기
 
Abim ipd studies draft 1 (final version)
Abim ipd studies draft 1 (final version)Abim ipd studies draft 1 (final version)
Abim ipd studies draft 1 (final version)
 
Seuk sak
Seuk sakSeuk sak
Seuk sak
 
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
 

Recently uploaded

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 

Recently uploaded (6)

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 

5조_최종발표.pptx

  • 2. Table of Contents 2 I. 개요 프로젝트 참여 인원 소개 프로젝트 소개 II. 프로젝트 설계 기술 스택 개발 툴 Cloud 설계도 III. 프로젝트 주요 기능 유저 일기 활동 IV. 기능 구현 방법 FE BE 배포 V. SW아카데미 회고 오동준 김채운 VI. 시연 영상
  • 3. 3 개요 01 프로젝트 참여 인원 소개 프로젝트 소개
  • 4. 4 개요 프로젝트 참여 인원 소개 ○ 오동준 ○ 충남대학교 컴퓨터융합학부 4학 년 재학중 ○ 프론트엔드 과정 ○ 프론트엔드, 클라우드 담당 ○ 김채운 ○ 충남대학교 경영학과 졸업 ○ 백엔드 과정 ○ 백엔드, DB, Docker 담당 ○ 홍성빈 ○ 충남대학교 컴퓨터융합학부 재학중 ○ 백엔드 과정 TA ○ 프로젝트 전반에 걸쳐서 많은 도움을 줌. ○ 박광수 ○ 아이티센 그룹 cloit 책임 수석 ○ 아이티센 기업 프로젝트 멘토 ○ 클라우드 구축에 많은 도움을 줌.
  • 5. 5 개요 주제 선정 배경 귀찮음 MyData 익명성 일기를 쓰고 싶은 욕구는 있으나. 쓰지 않거나 중간에 포기 서비스가 종료되면, 내가 쓴 일기도 사라짐 `내 정보`를 제공하는 것에 부담
  • 6. 6 주제 선정 배경 프로젝트 설명 날씨 = 기분: 기분을 날씨로 표현하는 일기장 주요 컨셉 차별화 요소 간편함 Export 익명 보안 • 간편한 UI • 기분/사진/코멘트를 선택적으로 입력 • 일기 작성 부담 완화 • Key만으로 일기장 접근 • 내 일기는 내 것 • 일기 다운로드 서비스 • 수익모델과 연결 • 사용자 정보를 받지 않는 완전한 익명서비스 • 서버도 사용자를 모름 • 서버에서 해킹이 어려운 Key 제공 • 개인정보가 유출될 일 없음 • 추후, 일기 내용 암호화 계획
  • 8. 8 프로젝트 설계 기술 스택 : BE 개발 언어 / 라이브러리 테스트 JUnit5 DB MySQL Java 17 Spring Boot Spring data JPA Spring Security Restdocs Infra Amazon EC2 Amazon S3
  • 9. 9 프로젝트 설계 기술 스택 : FE 프로토타입 Figma 코드 규격 / 스타일 Prettier ESLint 개발 언어 / 라이브러리 Javascript React Redux Toolkit Emotion Axios React Router Dom v6 배포 Amazon EC2
  • 10. 10 프로젝트 설계 개발 툴 FE VSCode Vite Yarn Teamwork BE IntelliJ Maven Spring 카카오톡 Notion Github Postman
  • 11. 11 프로젝트 설계 Cloud 설계도 ○ AWS를 사용한 2-Tier 시스템 구축 ○ 비용문제로 NAT Gateway를 NAT Instance 로 대체 ○ 과도한 리소스 사용을 방지하기 위하여 LoadBalancer, RDS, 이중화 서버 삭제
  • 13. 13 프로젝트 주요 기능 유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out key를 입력 후 로그인
  • 14. 14 프로젝트 주요 기능 유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out Generate Key 선택 일기 주제를 입력 후 키 생성 클릭 키 생성 확인 및 복사 버튼을 눌러서 복사
  • 15. 15 프로젝트 주요 기능 유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out 이메일 입력 후 전송 버튼을 누르면 해당 이메일로 키 백업
  • 16. 16 프로젝트 주요 기능 유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out Profile 탭을 눌러서 익명의 사용자 정보 확인 Avatar, nickname 모두 랜덤하게 생성
  • 17. 17 프로젝트 주요 기능 유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out 클릭 nickname과 일기 주제를 변경 변경된 정보 확인
  • 18. 18 프로젝트 주요 기능 유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out 일기장이 전부 사라짐
  • 19. 19 프로젝트 주요 기능 유저 Login Generate Key Email 전송 유저 정보 조회 유저 정보 수정 일기장 삭제 Log out Log out 됨
  • 20. 20 프로젝트 주요 기능 일기 일기 추가 일기 조회 일기 수정 일기 삭제 New Diary 버튼을 클릭 일기 작성 후 작성 버튼 클릭
  • 21. 21 프로젝트 주요 기능 일기 일기 추가 일기 조회 일기 수정 일기 삭제 Diary 탭에서 내가 쓴일기 조회 가능
  • 22. 22 프로젝트 주요 기능 일기 일기 추가 일기 조회 일기 수정 일기 삭제 일기 마다 옆 에 붙어있는 수정 버튼 클 릭
  • 23. 23 프로젝트 주요 기능 일기 일기 추가 일기 조회 일기 수정 일기 삭제 일기 마다 옆 에 붙어있는 삭제 버튼 클 릭
  • 24. 24 프로젝트 주요 기능 활동 활동 내역 조회 활동 내역 저장 Activity 선택 Monthly, Yearly 선택
  • 25. 25 프로젝트 주요 기능 활동 활동 내역 조회 활동 내역 저장 png로 일기 contribution table을 스크린샷 가능 png, pdf로 내가 쓴 일기 내역 내보 내기 가능
  • 27. 27 기능 구현 방법 FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력 ○ Store에 저장된 상태에 대한 직접적인 변경 방지 ○ 상태를 업데이트 할 때는 무조건 action을 dispatch함. ○ 무분별한 상태 변경을 방지하여 여러 컴포넌트에 일관된 상 태 제공  버그 방지
  • 28. 28 기능 구현 방법 FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력 ○ Props Drilling 현상 방지 ○ 코드 유지 보수의 비용이 절약됨.
  • 29. 29 기능 구현 방법 FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력 ○ Formik을 이용하여 Form 상태들 value를 추적 ○ onSubmit 시 redux store를 update하는 Action 발생
  • 30. 30 기능 구현 방법 FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력 ○ Modal, Snack bar, Tooltip 같은 다채로운 기능들 은 MUI에서 모두 가져다가 씀.
  • 31. 31 기능 구현 방법 FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력 ○ jsPDF를 이용하여 PDF로 내보내기 기능 구현
  • 32. 32 기능 구현 방법 FE 상태 관리 Form 상태 관리 CSS library PDF 제작 달력 ○ contribution table, 달력 등은 모두 직접 구현
  • 33. 33 기능 구현 방법 BE 도메인 관리 로그인 이미지 처리 Email 전송 ○ Spring Data JPA를 활용해 CRUD 연산 ○ Query 커스터마이징은 주로 Method query를 활용 ○ DB는 Docker image: 기본 schema와 data는 init.sql - 개발 시: docker image - 배포 시: docker-compose SpringDataJPA
  • 34. 34 기능 구현 방법 BE 도메인 관리 로그인 이미지 처리 Email 전송 ○ Spring Security와 JWT로 로그인 구현 SpringSecurity
  • 35. 35 기능 구현 방법 BE 도메인 관리 로그인 이미지 처리 Email 전송 ○ AWS S3를 이용한 이미지 처리 ○ Client와 Base64로 인코딩된 문자열을 송/수신 ○ AWS S3와 Byte array를 송/수신 AWS S3
  • 36. 36 기능 구현 방법 BE 도메인 관리 로그인 이미지 처리 Email 전송 Gmail ○ Gmail SMTP를 통해 전송
  • 37. 37 기능 구현 방법 배포 Cloud Domain Docker 프록시 ○ Cloud는 AWS를 이용 ○ 가장 최근에 배웠기에 가장 자세히 알고 무엇보다도 기업 멘토님께서 많이 도와주실 수 있는 CSP라서 선택
  • 38. 38 기능 구현 방법 배포 Cloud Domain Docker 프록시 ○ gabia에서 호스팅 도메인 구입 (세일해서 1년에 1900원) ○ AWS Route 53에서 호스팅 영 역을 생성 ○ 레코드 이름에 구매한 도메인 입력 ○ 도메인과 서비스 중인 AWS WEB EC2 IP를 연결 ○ 가비아 도메인 관리에서 네임 서버 에 Route 53에서 알려주는 네임 서버 등록 후 실제 접속이 가능하 기까지 1일 기다림.
  • 39. 39 기능 구현 방법 배포 Cloud Domain Docker 프록시 ○ FE와 BE모두 Dockerfile로 애플리케이션을 dockerize해서 Docker hub에 등록하여 AWS EC2 서버에서 다운받아서 동 작시키도록 함. ○ BE는 Jar 파일과 DB를 동시에 띄워야 하기 때문에 Docker-Compose를 이용하여 dockerize를 진행
  • 40. 40 기능 구현 방법 배포 Cloud Domain Docker 프록시 웹페이지 요청 API 요청 브라우저 FE 서버 BE 서버 ○ 배포할 때 API 요청주소를 WAS 서버로 지정하면 요청 X ○ 요청주소는 WEB EC2 주소가 되고 vite에서 API 요청 중 proxy가 들어간 path가 존재하면 해당 API의 호스트를 WAS 서버로 변경해서 대신 요청을 날려줌. Proxy
  • 42. 42 SW아카데미 회고 Problem Try Keep - 온라인 수업 뿐만 아니라 오프라인 수업 병행. - TA 특강: 실제 적용 기술 습득 - 기업 프로젝트에서 배운 내용을 팀 프로젝트에 적용 - 강의만으로는 알 수 없는 문제들 경험 - 모르면 언제든 물어볼 수 있는 환경(멘토님, TA님 등) - 24시간 이용 가능한 교육실 및 다과 - 학습시간 보장: 배운 것을 제대로 학습하고 집중할 시간을 아카데미에서 보장 - 기업 프로젝트 일정 안내 시기: 고정된 시간을 미리 공지(2월 초), 학생들이 시간표 조정 - 컨텐츠 최신화: 영상을 다시 찍진 못하더라도, 영상에 사용되었으나 변경/삭제된 기술에 대해 안내 - FE 팀 형성: FE 간 협업 - 공지사항 정리: 카톡 공지사항, 스프레드 시트, SW아카데미 홈페이지 등 오동준 KPT 회고 - 벅찬 일정: SW 아카데미 온/오프라인 수업, 프로젝트, 학부수업 등 - 기업 프로젝트 상세 일정 안내 시기: 학부 시간표가 결정되는 기간에 비해 기업프로젝트의 수업 상세 날짜와 시간 공지기간이 많이 늦음 - 컨텐츠 노후: 2018년 기술, 변경/삭제된 것이 많음 - FE/BE 인원 비대칭으로 인한 FE 협업 부재 - 카톡 공지사항: 매일 올라오는 공지사항을 정리해둔 곳이 없어 불편
  • 43. 43 SW아카데미 회고 Problem Try Keep - 빠른 피드백: 문제가 생겼을 때 연락이나 미팅이 빨랐음. - 멘토링: 매주 멘토링을 통해 프로젝트 방향성을 논의 - 프론트 구현: 프론트 구현이 빨라, 백엔드도 열심히 따라감. - 학습 소재의 다양함 - 데드라인 부재: 체계적인 구현 계획이 있었다면 조금 더 많은 부분 을 완성할 수 있지 않았을까 하는 아쉬움이 있다 - 시간 관리의 아쉬움: 여러 할 일들이 많아 시간 관리가 어려웠고, 팀 프로젝트에 많이 쏟지 못해 아쉬웠다. - 초창기에 대략적인 데드라인을 세우고, 자주 미팅을 하면서 구체적인 스케줄을 잡아본다. (구현 속도 향상 기대) - 개인적인 스케줄도 구체적으로 기록하여 시간관리를 한다. 김채운 KPT 회고