๊ตฌ๋ถ | ๋ด์ฉ |
---|---|
๊ธฐ๊ฐ | 2021.09. ~ 2021.12. |
๊ตฌ์ฑ | Planner 1๋ช
, Designer 1๋ช
, Backend 1๋ช
, Frontend(AOS, iOS) 2๋ช
ไธญ Backend ์ฐธ์ฌ |
์๊ฐ | ์๋๋ฐฉ์ ์ ๋ณด๋ฅผ ์์ง ๋ชปํ ์ฑ ๊ด์ฌ์ฌ๋ฅผ ๋ฐํ์ผ๋ก ๋งค์นญ๋ ์๋๋ฐฉ๊ณผ 3์ผ๊ฐ ์ฑํ ์ ์งํํ๋ ๋ฐ์ดํธ ๋งค์นญ ์ ํ๋ฆฌ์ผ์ด์ |
- ๊ด์ฌ์ฌ๊ฐ ๋น์ทํ ์ฌ๋๊ณผ 3์ผ๊ฐ ๋ํํ ์ ์๋ ์์ ์ดํ์ ๋๋ค.
- ๋ํ ์๊ฐ์ด ์ง๋ ์๋ก ๊ธฐ๋ฅ ์ ํ์ด ํ๋ฆฌ๊ณ 3์ผ ํ ํ๋กํ ๊ตํ์ ์ฑ๊ณตํ ์ ์๋๋ฐฉ๊ณผ ์ถ๊ฐ์ ์ผ๋ก ๋ํํ ์ ์์ต๋๋ค.
์ด๋ ์์ ์นดํ ๊ฐ๋ณด์ จ๋์? ๋ง์ ํธ ์๋์ ์ผ๊ตด๋ ๋์ด๋ ์ ์ ์์ง๋ง ๊ทธ์ ๋ํํฉ๋๋ค. ๋ธ๋ผ์ธ๋ ์นดํ์์ 3์ผ๊ฐ์ ๋ํ๋ง์ผ๋ก ์ค๋ ์ ๋๋ผ๊ณ ๋ง์์ ๋๋ ์๋์๊ฒ๋ง ํ๋กํ์ ๊ณต๊ฐํ์ธ์.
- ๊ด์ฌ์ฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋๋ฐฉ๊ณผ ๋งค์นญ๋๊ณ ๊ทธ ๊ด์ฌ์ฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ๋ํ ํ ํฝ์ด ์์ฑ๋ฉ๋๋ค.
- ๋ํ ์๊ฐ์ด ์ง๋ ์๋ก ์ฌ์ฉํ ์ ์๋ ์ฑํ ๋ฐฉ ๋ด ๊ธฐ๋ฅ ์ ํ์ด ํด์ ๋ฉ๋๋ค.
- ํ๋กํ ๊ณต๊ฐ๋ ์ํ๋ ์ฌ๋์๊ฒ๋ง 3์ผ๊ฐ์ ๋ํ๋ก ์ถฉ๋ถํ ์๋๋ฐฉ์ ์์๊ฐ์ ๋ ํ๋กํ์ ๊ณต๊ฐํ ์ ์์ต๋๋ค.
- 3์ผ ๊ฐ์ ๋ํ๊ฐ ์ฆ๊ฑฐ์ ๊ฑฐ๋ ์๋๋ฐฉ์ด ๋์ฑ ๊ถ๊ธํ๋ค๋ฉด ์์ ์ ํ๋กํ์ ๊ณต๊ฐํ๊ณ ์๋๋ฐฉ๊ณผ ํ๋กํ์ ๊ตํํ์ธ์. ํ๋กํ ๊ตํ์ ์ฑ๊ณตํ๋ฉด ์ถ๊ฐ์ ์ธ ๋ํ๋ฅผ ์ด์ด ํ ์ ์์ต๋๋ค.
- ํ๋กํ ๊ตํ์ ์ฑ๊ณตํ ๊ฒฝ์ฐ ์ ์ฅ ์ ์ ํํ๋ ์๋ฃ์์ ๋ฑ์ง๋ฅผ ํ๋ํ ์ ์์ต๋๋ค.
- ์๋๋ฐฉ๊ณผ ์ธ์ฐ์ด ์๋๋ผ๊ณ ์๊ฐ์ด ๋์๋์? '๊ทธ๋ง ์ฐ๋ฝํ๊ณ ์ถ์ด์'๋ ๋ง์ ํ์ง ๋ชปํด ์ ๋งคํ๊ฒ ๋ํ๋ฅผ ์ด์ด๊ฐ ์ ์๋์? ์ ํฌ ์นดํ์์๋ ๋ํ๋ฅผ ๋๋ด๊ณ ์ถ์ ์ด์ ๋ฅผ ์ ํํ๊ณ ๋ฐฉ์ ๋๊ฐ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
- Java 11
- SpringBoot, Spring MVC, Spring Data JPA, Spring Security, Spring REST Docs
- WebSocket, STOMP, SockJS
- Thymeleaf
- MySQL
- Redis (Cache, Message Broker)
- Mongo DB
- AWS EC2, RDS, S3, CloudFront, ElastiCache
- Mongo DB Atlas
- Firebase Cloud Messaging
- Nginx
Deatil
-
ํ์๊ฐ์ /๋ก๊ทธ์ธ
- ์์ ๊ณ์ ์ธ์ฆ
- FCM ํ ํฐ ๊ด๋ฆฌ
- ์ธ์ฆ ํ ํฐ ๋ฐ๊ธ
-
ํ ํฐ ๊ฐฑ์
Deatil
- ์ ์ ์ ๋ณด ์์
- ๋์ด, ์ฑ๋ณ (์ด๊ธฐ ์ ๋ ฅ ํ ์์ ๋ถ๊ฐ)
- ํ๋กํ ์ด๋ฏธ์ง
- ๊ด์ฌ์ฌ
- ์๋๋ฐฉ ์ฑ๋ณ
- ๋ชฉ์๋ฆฌ
- ์ง์ญ
- ์ ์ ์ ๋ณด ์กฐํ
- ํ๋กํ ์์ธ ์ ๋ณด ์กฐํ
- ํ๋กํ ์ด๋ฏธ์ง ๋ฆฌ์คํธ ์กฐํ
- ํํด
- ๊ฑด์์ฌํญ ์์ฑ
- Email ์ฐ๋
- ์ ๊ณ
- ์ ๊ณ ๋ด์ญ ์กฐํ
Deatil
- ๋งค์นญ ์์ฒญ
- ๋งค์นญ ์์ฒญ ์ทจ์
- ๋งค์นญ ๋ฆฌ์คํธ ์กฐํ
- ๋งค์นญ ์์ธ ์ ๋ณด ์กฐํ
- ์๋ฃ์ ์ ํ
- ํ ํฝ(์ถ์ฒ ๋ํ ์ฃผ์ ) ์กฐํ
- ํ๋กํ ๊ตํ
- ๋งค์นญ ๋๊ฐ๊ธฐ
Deatil
- ๋ฉ์์ง ์์ /๋ฐ์
- ํ ์คํธ
- ์ฌ์ง
- ์์ฑ
- ๋์์
- ๋ฉ์์ง ๋ด์ญ ์กฐํ
Deatil
- ํธ์ ์๋ฆผ ์ ์ก
- ์ ์ ์ํ๋ฅผ ๊ณ ๋ คํด์ ๋ฏธ์ ์ ์ ์ ์๊ฒ ์๋ฆผ ์ ์ก
- ์๋ฆผ ์ค์ ๋ณ๊ฒฝ
- ์ ์ฒด ์ค์ /ํด์
- ์ฑํ ๋ฐฉ ๋ณ ์ค์ /ํด์
Deatil
- ๊ณต์ง ์กฐํ
- ๋ง์ง๋ง ๊ณต์ง ์กฐํ API ์์ฒญ ์๊ฐ์ ๋ฐํ์ผ๋ก ๊ณต์ง ์์ ์ฌ๋ถ ์ ๊ณต
Deatil
- ์ค์๊ฐ/์ ์ฒด ์ฌ์ฉ์ ์ ์กฐํ
- ์ฃผ๊ฐ ์ ์์ ์ ๋ฐ ์ ์์ ๋น์จ ์กฐํ
- ์ ์ฒด ์ฌ์ฉ์ ๋ชฉ๋ก ์กฐํ
- ์ ๊ณ ๋ด์ญ ์กฐํ
- ๊ฑด์์ฌํญ ์กฐํ
- ํํด / ๋ฐฉ ๋๊ฐ๊ธฐ ์ฌ์ ์กฐํ
- ๊ณต์ง ์์ฑ
Deatil
-
3์ผ ์ฑํ ํ์ธ
- ๋งค์นญ ์ง์ ์๊ฐ ๋ณ ์ฑํ ๋ฐฉ ๋ด ๊ธฐ๋ฅ ํด์ ๋ฉ์์ง/์๋ฆผ ์ ์ก
- ๋งค์นญ ์ ํจ ์๊ฐ ์๋ฐ ์ ๋ฉ์์ง/์๋ฆผ ์ ์ก
- ๋งค์นญ ์ ํจ ์๊ฐ ์ด๊ณผ ์ ํ๋กํ ๊ตํ ํ ํ๋ฆฟ ๋ฉ์์ง/์๋ฆผ ์ ์ก
-
7์ผ ์ฑํ ํ์ธ
- ๋งค์นญ ์ ํจ ์๊ฐ ์๋ฐ ์ ๋ฉ์์ง/์๋ฆผ ์ ์ก
- ๋งค์นญ ์ ํจ ์๊ฐ ์ด๊ณผ ์ ์ฑํ ๋ฐฉ ๋นํ์ฑํ
-
๋งค์นญ ์์ฒญ ์๋ ์ทจ์
- ์ค๋๋ ์์ฒญ์ ๋ํด์ ๋งค์นญ ์ทจ์ ๋ฐ ์๋ชจ๋ ๋งค์นญ๊ถ ๋ณต๊ตฌ
-
๋งค์ผ ๋ฐค 12์ ๋งค์นญ๊ถ ์ ๋ฆฌ์
-
๋งค์ผ ์๋ฒฝ ์ ์ผ ํ๋ฃจ๋์ ์ ์ํ ์ฌ์ฉ์ ์ ๋ฐ ์ ์ ๋น์จ ์ ์ฅ
- Gradle 7.x
- JDK 11
-
/src/main/resources
์ ์๋ ์์์ ์ด์ฉํ์ฌapplication.yml
ํ์ผ์ ์์ฑํฉ๋๋ค.Sample
spring: profiles: active: {์ ์ฉ ํ๊ฒฝ} --- spring: profiles: group: "local": "local, common" "dev": "dev, common" "prod": "prod, common" --- spring: config: activate: on-profile: local datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: {Local RDBMS(MySQL) URL} username: {Local RDBMS(MySQL) Username} password: {Local RDBMS(MySQL) ๋น๋ฐ๋ฒํธ} redis: host: {Local Redis URL} port: {Local Redis PORT} data: mongodb: uri: {Local Mongo DB URL} --- spring: config: activate: on-profile: dev datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: {Dev RDBMS(MySQL) URL} username: {Dev RDBMS(MySQL) Username} password: {Dev RDBMS(MySQL) ๋น๋ฐ๋ฒํธ} redis: host: {Dev Redis URL} port: {Dev Redis PORT} data: mongodb: uri: {Dev Mongo DB URL} --- spring: config: activate: on-profile: prod datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: {Prod RDBMS(MySQL) URL} username: {Prod RDBMS(MySQL) Username} password: {Prod RDBMS(MySQL) ๋น๋ฐ๋ฒํธ} redis: host: {Prod Redis URL} port: {Prod Redis PORT} data: mongodb: uri: {Prod Mongo DB URL} --- server: port: 8080 tomcat: uri-encoding: UTF-8 spring: config: activate: on-profile: common mvc: static-path-pattern: /static/** jpa: database: mysql database-platform: org.hibernate.dialect.MySQL5InnoDBDialect generate-ddl: true servlet: multipart: max-file-size: 10MB mail: host: smtp.gmail.com port: 587 username: {Gmail SMTP ์ด์ฉํ ๊ณ์ ์ ์ด๋ฉ์ผ ์ฃผ์} password: {Gmail SMTP ์ด์ฉํ ๊ณ์ ์ ์ด๋ฉ์ผ์ ๋น๋ฐ๋ฒํธ} properties: mail: smtp: starttls: enable: true required: true auth: true thymeleaf: cache: false cloud: aws: credentials: accessKey: {AWS Credential Access Key} secretKey: {AWS Credential Secret Key} s3: bucket: {AWS S3 Bucket ์ด๋ฆ} region: static: ap-northeast-2 cloudfront: url: {AWS CloudFront URL} stack: auto: false email: from: {๊ฑด์์ฌํญ ๋ฐ์ ์ด๋ฉ์ผ ์ฃผ์} to: {๊ฑด์์ฌํญ ์์ ์ด๋ฉ์ผ ์ฃผ์} fcm: key: {Firebase Key(json) ํ์ผ ๊ฒฝ๋ก} auth: https://www.googleapis.com/auth/cloud-platform api: {FCM Send API URL} firebase-create-scoped: https://www.googleapis.com/auth/firebase.messaging firebase-multicast-message-size: 450 secret: key1: {JWT ์๊ทธ๋์ฒ 1} key2: {JWT ์๊ทธ๋์ฒ 2} key3: {JWT ์๊ทธ๋์ฒ 3} sample-token: {Security ํํฐ ์ ์ฉ ํ ํ ์คํธํ ๊ฒฝ์ฐ Access token} admin: id: {๊ด๋ฆฌ์ ๊ณ์ ID} pw: {๊ด๋ฆฌ์ ๊ณ์ ๋น๋ฐ๋ฒํธ}
/src/main/resources/firebase
์ Firebase Key ํ์ผblind-cafe-firebase-key.json
์ ์ถ๊ฐํฉ๋๋ค.
Position | Name | Repository |
---|---|---|
Planner | ์ดํ์ง | |
Designer | ๊น๋ค์ | |
Server | ๊นํฌ๋ | https://github.com/Blind-Cafe/BlindCafe-Server |
AOS | ๋ ธ์๋ | https://github.com/Blind-Cafe/BlindCafe-AOS |
iOS | ๊ถํ์ | https://github.com/Blind-Cafe/BlindCafe-iOS |