Skip to content

πŸ“ž μ „ν™” ν•œ ν†΅μœΌλ‘œ ν•΄κ²°ν•˜λŠ” 디지털 μ„œλΉ„μŠ€ - λ‚˜λ§Œμ˜ μž‘μ€ μ‹œλ‹ˆλ˜

Notifications You must be signed in to change notification settings

kakao-tech-campus-2nd-step3/Team8_BE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

λ‚˜λ§Œμ˜ μž‘μ€ μ‹œλ‹ˆλ˜

"λ””μ§€ν„Έμ‹œλŒ€?! λ‚˜λ„ 이제 두렡지 μ•Šμ•„!"

πŸ‘¦πŸ» μ„ΈλŒ€μ™€ πŸ‘¨πŸ»β€πŸ¦³μ„ΈλŒ€λ₯Ό μ΄μ–΄μ£ΌλŠ” λ”°λœ»ν•œ μ „ν™” πŸ“ž

λ‚˜λ§Œμ˜ μž‘μ€ μ‹œλ‹ˆλ˜

μ‹œμ—°μ˜μƒ

λ°”λ‘œκ°€κΈ°

πŸš€ 배포 μ£Όμ†Œ

βœ”οΈ Client

https://sinitto.life/

βœ”οΈ Dummy Data Login

https://sinitto.site/dummy

[주의: 더미데이터 μœ μ €λŠ” μΉ΄μΉ΄μ˜€λ©”μ‹œμ§€κ°€ μ˜€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€]

λΉ„λ°€λ²ˆν˜Έ 1234

βœ”οΈ Server

https://sinitto.site/

βœ”οΈ Swagger

https://sinitto.site/swagger-ui/index.html

βœ”οΈ Admin Page

https://sinitto.site/admin/login

이메일 [email protected]

λΉ„λ°€λ²ˆν˜Έ admin123

βœ”οΈ Slack

https://join.slack.com/t/sinitto/shared_invite

βœ”οΈ ν”„λ‘ νŠΈμ—”λ“œ Evaluation 브랜치

https://github.com/kakao-tech-campus-2nd-step3/Team8_FE/tree/Evaluation

✨ ν”„λ‘œμ νŠΈ μ‹€ν–‰ κ°€μ΄λ“œ

μ•„λž˜μ˜ 단계λ₯Ό 따라 ν”„λ‘œμ νŠΈλ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μš°λΆ„νˆ¬ κΈ°μ€€μœΌλ‘œ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν•„μˆ˜ μ†Œν”„νŠΈμ›¨μ–΄

  • Java 21
  • Gradle
  • Redis
  • Git

1. ν”„λ‘œμ νŠΈ 클둠

GitHubμ—μ„œ ν”„λ‘œμ νŠΈλ₯Ό ν΄λ‘ ν•©λ‹ˆλ‹€

git clone https://github.com/kakao-tech-campus-2nd-step3/Team8_BE.git
cd Team8_BE

2. ν™˜κ²½ μ„€μ •

application-dev.propertiesΒ νŒŒμΌμ— μ•„λž˜μ™€ 같은 섀정을 μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€:

  • Kakao API μ„€μ •: Kakao 둜그인 및 결제 URL κ΄€λ ¨ 정보
  • Redis μ„€μ •: Redis μ„œλ²„ μ—°κ²° 정보
  • MySQL μ„€μ •: λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° 정보
  • JWT μ„€μ •: λΉ„λ°€ ν‚€ λ“± 인증 κ΄€λ ¨ 정보
  • SSL μ„€μ •: μ„œλ²„ SSL μΈμ¦μ„œ 경둜 및 μ„€μ •
  • Slack μ„€μ •: μ•Œλ¦Ό κ΄€λ ¨ μ„€μ •
  • Admin μ„€μ •: μ–΄λ“œλ―Ό 계정 μ„€μ •

application-dev.propertiesΒ μ˜ˆμ‹œ:

# Kakao API μ„€μ •
kakao.clientId=YOUR_KAKAO_CLIENT_ID
kakao.devRedirectUri=YOUR_LOCAL_REDIRECT_URI
kakao.redirectUri=YOUR_PROD_REDIRECT_URI
kakao.frontUri=YOUR_FRONT_URI
kakao.Pay-url=YOUR_KAKAO_PAY_URL

# JWT μ„€μ •
jwt.secret=YOUR_JWT_SECRET_KEY

# Redis μ„€μ •
spring.data.redis.host=YOUR_REDIS_HOST
spring.data.redis.port=YOUR_REDIS_PORT
spring.data.redis.password=YOUR_REDIS_PASSWORD

# MySQL μ„€μ •
spring.datasource.url=YOUR_MYSQL_URL
spring.datasource.username=YOUR_DB_USERNAME
spring.datasource.password=YOUR_DB_PASSWORD
spring.jpa.hibernate.ddl-auto=update

# SSL μ„€μ •
server.ssl.key-store=YOUR_SSL_KEYSTORE_PATH
server.ssl.key-store-password=YOUR_KEYSTORE_PASSWORD
server.ssl.key-store-type=PKCS12

# Slack μ„€μ •
slack.notice.webhook.url=YOUR_SLACK_WEBHOOK_URL
slack.charge.request.url=YOUR_SLACK_CHARGE_REQUEST_URL
slack.withdraw.request.url=YOUR_SLACK_WITHDRAW_REQUEST_URL

# Admin μ„€μ •
admin.adminEmail=YOUR_ADMIN_EMAIL
admin.adminPassword=YOUR_ADMIN_PASSWORD

# 기타 μ„€μ •
kakao.bank-name=YOUR_BANK_NAME
kakao.account-number=YOUR_ACCOUNT_NUMBER
kakao.name=YOUR_KAKAO_NAME
kakao.front-uri-without-https=YOUR_FRONT_URI_WITHOUT_HTTPS

3. μ˜μ‘΄μ„± μ„€μΉ˜

ν”„λ‘œμ νŠΈ μ˜μ‘΄μ„±μ„ μ„€μΉ˜ν•©λ‹ˆλ‹€.

./gradlew build

4. Redis μ„œλ²„ μ‹€ν–‰

Redis μ„œλ²„λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

redis-server

5. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λŠ” λ°©λ²•μ—λŠ” 두 가지가 μžˆμŠ΅λ‹ˆλ‹€.

  1. Gradle둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰

    ./gradlew bootRun
    
  2. JAR νŒŒμΌμ„ μ‹€ν–‰

    ./gradlew bootJar
    java -jar build/libs/Team8_BE-0.0.1-SNAPSHOT.jar
    

πŸ‘₯ νŒ€μ›

Frontend Frontend Frontend
κΉ€κ°•λ―Ό 정지원 μ œμœ λ‚˜
Backend Backend Backend Backend
μ •μ„±ν›ˆ μ΄μ§€ν˜Έ μ΄λ„ν›ˆ 김은선

βš’οΈ 기술 μŠ€ν…

Frontend

image

Backend

image

Note

λ°±μ—”λ“œ λ‚΄λΆ€ μ‰˜μŠ€ν¬λ¦½νŠΈ λͺ¨μŒ https://curse-plastic-d90.notion.site/3ce05a49e06046469bde14c12b8b9c00

μ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜

Service Architecture

ERD

image

Use Case Diagram

image image image image

πŸ€”Β μ‹œλ‹ˆλ˜κ°€ λ¬΄μ—‡μΈκ°€μš”?

β€˜μ‹œλ‹ˆλ˜β€™λŠ” μ–΄λ₯΄μ‹ μ„ λœ»ν•˜λŠ” β€˜μ‹œλ‹ˆμ–΄β€™μ™€ λΉ„λ°€ 친ꡬλ₯Ό λœ»ν•˜λŠ” β€˜λ§ˆλ‹ˆλ˜β€™λ₯Ό ν•©μΉœ λ‹¨μ–΄λ‘œ, 디지털 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜κΈ° μ–΄λ €μš΄ μ–΄λ₯΄μ‹ λ“€κ³Ό 디지털 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜λŠ”λ° μ΅μˆ™ν•œ μ Šμ€ μ„ΈλŒ€λ₯Ό 이어주기 μœ„ν•œ β€˜μ‹œλ‹ˆλ˜β€™λΌλŠ” λͺ…칭을 μ‚¬μš©ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

λ˜ν•œ β€˜μ‹œλ‹ˆλ˜β€™λŠ” μ„ΈλŒ€ κ°„μ˜ μ†Œν†΅μ„ κ°•μ‘°ν•˜λ©°, μ„œλ‘œμ˜ ν•„μš”λ₯Ό μ΄ν•΄ν•˜κ³  μ§€μ›ν•˜λŠ” 관계λ₯Ό ν˜•μ„±ν•˜κ³ μž ν•˜λŠ” 취지λ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

πŸ§‘πŸ»β€πŸ’»Β μ–΄λ–€ μ„œλΉ„μŠ€μΈκ°€μš”?

κ³Όκ±°μ—λŠ” μ‹œλ‹ˆμ–΄λ“€μ΄ μ „ν™”λ₯Ό 톡해 배달 μ£Όλ¬Έμ΄λ‚˜ μ„œλΉ„μŠ€ μ΄μš©μ„ 비ꡐ적 μ‰½κ²Œ ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 슀마트폰이 λ°œλ‹¬ν•œ ν˜„μž¬, λŒ€λΆ€λΆ„μ˜ μ„œλΉ„μŠ€κ°€ 슀마트폰 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 기반으둜 μ œκ³΅λ˜κ³ μžˆμ–΄, μ‹œλ‹ˆμ–΄λ“€μ΄ μ΄λŸ¬ν•œ 디지털 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•˜λŠ” 데 λ§Žμ€ 어렀움을 κ²ͺκ³  μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μ œλ‘œ 저희 쑰원 쀑 ν•œ λΆ„μ˜ ν• μ•„λ²„μ§€κ»˜μ„œλŠ” 슀마트폰 μ‚¬μš©μ— 어렀움을 λŠλΌμ…¨κ³ , 주둜 μ‘°μ›λΆ„λ“€μ—κ²Œ μ „ν™”λ₯Ό ν•˜μ—¬ 도움을 μš”μ²­ν•˜μ…¨μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ¬Έμ œμ μ„ λ°”νƒ•μœΌλ‘œ μ €ν¬λŠ” β€˜μ–΄λ₯΄μ‹ λ“€μ΄ μ˜ˆμ „μ— 자주 μ‚¬μš©ν•˜μ‹œλ˜ μ „ν™”λ₯Ό 톡해 디지털 μ„œλΉ„μŠ€λ₯Ό μ‰½κ²Œ μ΄μš©ν•  μˆ˜λŠ” μ—†μ„κΉŒ?’ λΌλŠ” 생각을 ν•˜κ²Œ λ˜μ—ˆκ³ , 이λ₯Ό β€˜μ‹œλ‹ˆλ˜β€™ μ„œλΉ„μŠ€μ˜ 핡심 κΈ°λŠ₯으둜 자리 작게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

이 μ„œλΉ„μŠ€λŠ” μ–΄λ₯΄μ‹ λ“€μ΄ 보닀 μ‰½κ²Œ 디지털 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  수 μžˆλ„λ‘ λ•λŠ” λ™μ‹œμ—, μ Šμ€ μ„ΈλŒ€κ°€ κ·Έλ“€κ³Ό μ†Œν†΅ν•˜κ³  지원할 수 μžˆλŠ” 기회λ₯Ό μ œκ³΅ν•˜κ³ μž ν•©λ‹ˆλ‹€.

πŸ’¬Β ν•΅μ‹¬ κΈ°λŠ₯ κ°„λž΅ν•œ μ„€λͺ…

β€˜μ‹œλ‹ˆλ˜β€˜λŠ” 크게 두 κ°€μ§€μ˜ 핡심 κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€.

콜백 μ„œλΉ„μŠ€

μ–΄λ₯΄μ‹ λ“€μ΄ μ „ν™” ν•œ ν†΅μœΌλ‘œ 디지털 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  수 있게 ν•©λ‹ˆλ‹€.

이 μ„œλΉ„μŠ€λ₯Ό μ›ν™œν•˜κ²Œ μ΄μš©ν•  수 μžˆλ„λ‘ λ³΄ν˜ΈμžλŠ” 사전에 μ‹œλ‹ˆλ˜ μ„œλΉ„μŠ€μ— μ‹œλ‹ˆμ–΄λ₯Ό λ“±λ‘ν•˜κ³ , μ‹œλ‹ˆμ–΄κ°€ μš”μ²­ν•  λ‚΄μš©μ΄ λ‹΄κΈ΄ κ°€μ΄λ“œλΌμΈμ„ μ œκ³΅ν•©λ‹ˆλ‹€.

μ•ˆλΆ€ μ „ν™” μ„œλΉ„μŠ€

ν‰μ†Œ 업무 λ“±μ˜ ν™œλ™μœΌλ‘œ 인해 μ‹œλ‹ˆμ–΄λΆ„λ“€κ³Ό 연락할 μ‹œκ°„μ΄ λΆ€μ‘±ν•œ λ³΄ν˜Έμžλ“€μ„ μœ„ν•œ μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

λ³΄ν˜ΈμžλŠ” 사전에 μ›Ήμ‚¬μ΄νŠΈμ— μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  κΈ°κ°„, μ‹œκ°„λŒ€, μ „ν™” μ‹œκ°„ 및 μ „ν™”λ‘œ ν™•μΈν–ˆμœΌλ©΄ ν•˜λŠ” λ‚΄μš©μ„ μž‘μ„±ν•˜κ³ , μ‹œλ‹ˆλ˜λŠ” ν•΄λ‹Ή μš”μ²­μ‚¬ν•­μ„ ν™•μΈν•œ ν›„ 수락 λ²„νŠΌμ„ 눌러 μ•ˆλΆ€ μ „ν™” μ„œλΉ„μŠ€λ₯Ό μˆ˜ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€.

πŸ’‘Β ν•΅μ‹¬ κΈ°λŠ₯ 상세 μ„€λͺ…

1. 곡톡

둜그인

image-1

β€™μΉ΄μΉ΄μ˜€ν†‘ λ‘œκ·ΈμΈβ€™ λ²„νŠΌμ„ 눌러 λ‘œκ·ΈμΈμ„ μ§„ν–‰ν•©λ‹ˆλ‹€. 이전에 λ‘œκ·ΈμΈμ„ ν•œ 적이 μžˆμ„ 경우 λ°”λ‘œ 둜그인이 μ™„λ£Œλ˜λ©°, 처음 μ΄μš©ν•  경우 νšŒμ›κ°€μž… 창으둜 μ΄λ™ν•˜κ²Œ λ©λ‹ˆλ‹€.

νšŒμ›κ°€μž…

image-2

μ‚¬μš©μžλŠ” κ°€μž… μœ ν˜•μΈ β€˜μ‹œλ‹ˆλ˜β€˜μ™€ β€™λ³΄ν˜Έμžβ€˜ 쀑 ν•œ 가지 μœ ν˜•μ„ μ„ νƒν•©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ β€™μ‹œλ‹ˆλ˜β€˜λŠ” μ‹œλ‹ˆμ–΄μ˜ 디지털 μ„œλΉ„μŠ€λ₯Ό μˆ˜ν–‰ν•˜λŠ” μ‚¬λžŒμ΄λ©°, β€™λ³΄ν˜Έμžβ€˜λŠ” 디지털 μ„œλΉ„μŠ€λ₯Ό ν•„μš”λ‘œ ν•˜λŠ” μ‹œλ‹ˆμ–΄λ₯Ό λ“±λ‘ν•˜λŠ” μ‚¬λžŒμž…λ‹ˆλ‹€.

μ‚¬μš©μžλŠ” κ°€μž… μœ ν˜•μ„ μ„ νƒν•œ ν›„ 이름 및 μ—°λ½μ²˜λ₯Ό μž…λ ₯ν•˜κ³ , μ•„λž˜μ˜ μ„œμ•½μ„œλ₯Ό 읽은 ν›„ β€™μ„œμ•½μ„œμ˜ λ‚΄μš©μ— λ™μ˜ν•©λ‹ˆλ‹€β€˜λ₯Ό μ²΄ν¬ν•œ 후에 β€™κ°€μž…ν•˜κΈ°β€˜ λ²„νŠΌμ„ 눌러 νšŒμ›κ°€μž…μ„ μ™„λ£Œν•©λ‹ˆλ‹€.

2. 포인트

포인트 μΆ©μ „ (보호자)

image-4

β€˜λ³΄ν˜Έμžβ€™λŠ” 포인트λ₯Ό μΆ©μ „ν•˜μ—¬ μ‹œλ‹ˆμ–΄κ°€ μ œκ³΅λ°›λŠ” μ„œλΉ„μŠ€μ˜ 값을 μ œκ³΅ν•©λ‹ˆλ‹€.

β€˜μΆ©μ „ν•˜κΈ°β€™ λ²„νŠΌμ„ λˆ„λ₯Έ ν›„, μΆ©μ „ κΈˆμ•‘μ„ μž…λ ₯ν•˜λ©΄ μΆ©μ „ μš”μ²­μ΄ μ™„λ£Œλ˜λ©°, μ΄λŸ¬ν•œ μš”μ²­μ€ κ΄€λ¦¬μžμ—κ²Œ μ „λ‹¬λ©λ‹ˆλ‹€.

κ·Έ ν›„ μΉ΄μΉ΄μ˜€ν†‘μ˜ β€˜λ‚˜μ—κ²Œ 보낸 λ©”μ‹œμ§€β€™λ₯Ό ν™•μΈν•˜μ—¬ κΈˆμ•‘μ„ μž…κΈˆν•  μ€ν–‰κ³„μ’Œμ™€ μž…κΈˆμžλͺ…을 ν™•μΈν•˜κ³ , ν•΄λ‹Ή 양식에 λ§žμΆ”μ–΄ μž…κΈˆμ„ μ§„ν–‰ν•©λ‹ˆλ‹€.

κ΄€λ¦¬μžλŠ” μž…κΈˆ 내역을 ν™•μΈν•œ ν›„ 포인트λ₯Ό μ§€κΈ‰ν•©λ‹ˆλ‹€.

포인트 좜금 (μ‹œλ‹ˆλ˜)

image-3

β€˜μ‹œλ‹ˆλ˜β€™λŠ” 콜백 μ„œλΉ„μŠ€ 및 μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€λ₯Ό 톡해 받은 포인트λ₯Ό ν˜„κΈˆμœΌλ‘œ ν™˜μ „ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΅œμ†Œ 5000포인트 이상이 μžˆμ–΄μ•Ό 좜금이 κ°€λŠ₯ν•˜λ©°, μΆœκΈˆν•  포인트λ₯Ό μž…λ ₯ν•œ ν›„, β€˜μΆœκΈˆ 신청’ λ²„νŠΌμ„ 눌러 좜금 μš”μ²­μ„ κ΄€λ¦¬μžμ—κ²Œ μ „μ†‘ν•©λ‹ˆλ‹€.

κ΄€λ¦¬μžλŠ” 이λ₯Ό ν™•μΈν•œ ν›„, λ“±λ‘λœ κ³„μ’Œλ²ˆν˜Έλ‘œ 수수료λ₯Ό μ œμ™Έν•œ κΈˆμ•‘μ„ μ†‘κΈˆν•©λ‹ˆλ‹€.

3. 콜백 μ„œλΉ„μŠ€

μ‹œλ‹ˆμ–΄ 등둝 (보호자)

image-5

β€˜λ³΄ν˜Έμžβ€™λŠ” 디지털 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  μ‹œλ‹ˆμ–΄λ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€. λ§ˆμ΄νŽ˜μ΄μ§€μ˜ β€˜μ‹œλ‹ˆμ–΄ λ“±λ‘ν•˜κΈ°β€™λ²„νŠΌμ„ 눌러 μ‹œλ‹ˆμ–΄λ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€.

μ‹œλ‹ˆμ–΄λ₯Ό λ“±λ‘ν•˜κΈ° μœ„ν•΄ μ‹œλ‹ˆμ–΄μ˜ 성함 및 μ „ν™”λ²ˆν˜Έλ₯Ό μž…λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

κ°€μ΄λ“œλΌμΈ 등둝 (보호자)

image-6

β€˜λ³΄ν˜Έμžβ€™λŠ” μ‹œλ‹ˆμ–΄λ₯Ό λ“±λ‘ν•œ ν›„, 각 λͺ©λ‘μ— λŒ€ν•œ κ°€μ΄λ“œλΌμΈμ„ λ“±λ‘ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€. νƒμ‹œ ν˜ΈμΆœν•˜κΈ° , μŒμ‹ 배달 μ£Όλ¬Έν•˜κΈ° , 병원 μ ‘μˆ˜ λŒ€ν–‰ , μ—¬ν–‰ 및 λ¬Έν™” μƒν™œ μ˜ˆμ•½ λŒ€ν–‰ 에 λŒ€ν•œ κ°€μ΄λ“œλΌμΈμ„ μΆ”κ°€ν•  수 있으며, κ°€μ΄λ“œλΌμΈ 제λͺ© 및 κ°€μ΄λ“œλΌμΈ λ‚΄μš©μ„ μž…λ ₯ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.

β€˜μ‹œλ‹ˆλ˜β€™κ°€ 이 λ‚΄μš©μ„ ν™•μΈν•œ ν›„ 디지털 μ„œλΉ„μŠ€λ₯Ό μˆ˜ν–‰ν•˜κΈ° λ•Œλ¬Έμ—, κ°€λŠ₯ν•œ λ‚΄μš©μ„ μƒμ„Ένžˆ 적어야 μ›ν• ν•œ μ„œλΉ„μŠ€ 진행이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ „ν™”λ₯Ό ν†΅ν•œ 등둝 (μ‹œλ‹ˆμ–΄)

image-7

β€˜μ‹œλ‹ˆμ–΄β€™λŠ” 메인 νŽ˜μ΄μ§€μ— μ ν˜€μžˆλŠ” 번호둜 μ „ν™”λ₯Ό ν•˜μ—¬ 콜백 μ„œλΉ„μŠ€λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€. 등둝이 μ„±κ³΅ν–ˆμ„ 경우 β€˜κ°μ‚¬ν•©λ‹ˆλ‹€. μž μ‹œλ§Œ κΈ°λ‹€λ €μ£Όμ„Έμš”.’ λΌλŠ” κΈ°κ³„μŒμ΄ 듀리며, β€˜μ‹œλ‹ˆλ˜β€™κ°€ μš”μ²­μ„ μˆ˜λ½ν•  λ•ŒκΉŒμ§€ 기닀리고 있으면 λ©λ‹ˆλ‹€.

콜백 μš”μ²­ 확인 (μ‹œλ‹ˆλ˜)

image-8

β€˜μ‹œλ‹ˆλ˜β€™λŠ” μ‹œλ‹ˆμ–΄κ°€ μš”μ²­ν•œ 콜백 μ„œλΉ„μŠ€μ˜ 리슀트λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬ μš”μ²­λ“€ 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ—¬ μƒμ„Έν•œ λ‚΄μš©μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

콜백 μš”μ²­ 수락 & μˆ˜ν–‰ (μ‹œλ‹ˆλ˜)

image-9

β€˜μ‹œλ‹ˆλ˜β€™λŠ” μ‹œλ‹ˆμ–΄κ°€ μš”μ²­ν•œ 콜백 μ„œλΉ„μŠ€μ˜ 리슀트 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ—¬ β€˜μš”μ²­ μƒμ„ΈνŽ˜μ΄μ§€β€™λ‘œ 이동할 수 μžˆμŠ΅λ‹ˆλ‹€.

각 λͺ©λ‘λ§ˆλ‹€ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ μƒμ„Έν•œ λ‚΄μš©μ„ 확인할 수 있으며, λ‚΄μš©μ„ ν™•μΈν•˜κ³  μ„œλΉ„μŠ€λ₯Ό μˆ˜ν–‰ν•  수 μžˆμ„ 경우 β€˜μ „ν™”κ±ΈκΈ° 및 μˆ˜λ½ν•˜κΈ°β€™ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ μ„œλΉ„μŠ€λ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€.

콜백 μš”μ²­ μ™„λ£Œ λŒ€κΈ° (μ‹œλ‹ˆλ˜)

image-10

β€˜μ‹œλ‹ˆλ˜β€™κ°€ β€˜μ „ν™”κ±ΈκΈ° 및 μˆ˜λ½ν•˜κΈ°β€™ λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μ•„λž˜μ— β€˜μ‹œλ‹ˆμ–΄ μ „ν™”λ²ˆν˜Έβ€™κ°€ λœ¨κ²Œλ©λ‹ˆλ‹€.

β€˜μ‹œλ‹ˆλ˜β€™λŠ” ν•΄λ‹Ή μ „ν™”λ²ˆν˜Έλ‘œ μ „ν™”λ₯Ό κ±Έμ–΄ μ‹œλ‹ˆμ–΄κ°€ μ–΄λ–€ μš”μ²­μ„ ν•˜λŠ”μ§€ ν™•μΈν•˜κ³ , ν•΄λ‹Ή μ„œλΉ„μŠ€λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.

이 λ•Œ, κ°€μ΄λ“œλΌμΈκ³Ό λ²—μ–΄λ‚˜λŠ” λ‚΄μš©μ„ λΆ€νƒν•˜κ±°λ‚˜, β€˜μ‹œλ‹ˆλ˜β€™κ°€ μˆ˜ν–‰ν•  수 μ—†λŠ” 뢀탁을 ν•  경우 β€˜λ„μ›€ 포기’ λ²„νŠΌμ„ 눌러 ν•΄λ‹Ή μš”μ²­μ„ κ±°λΆ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μš”μ²­μ„ μ™„λ£Œν•œ ν›„ β€˜λ„μ›€ μ™„λ£Œβ€™λ²„νŠΌμ„ 눌러 μ™„λ£Œ λŒ€κΈ° μƒνƒœλ‘œ μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

콜백 μš”μ²­ μ™„λ£Œ (보호자)

image-12

'보호자'λŠ” 'μ‹œλ‹ˆλ˜'κ°€ μ™„λ£Œ λ²„νŠΌμ„ λˆ„λ₯Έ ν›„, μ‹œλ‹ˆμ–΄μ—κ²Œ ν•΄λ‹Ή μš”μ²­μ΄ μ œλŒ€λ‘œ μ™„λ£Œλ˜μ—ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. κ·Έ λ‹€μŒ 'μ„œλΉ„μŠ€ μ΄μš©λ‚΄μ—­' ν™”λ©΄μ—μ„œ μ™„λ£Œ λŒ€κΈ° μƒνƒœμΈ 콜백 μ„œλΉ„μŠ€λ₯Ό μ™„λ£Œ μƒνƒœλ‘œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ§Œμ•½ λ³΄ν˜Έμžκ°€ 이틀 λ™μ•ˆ 이 λ²„νŠΌμ„ λˆ„λ₯΄μ§€ μ•ŠμœΌλ©΄, μ„œλΉ„μŠ€λŠ” μžλ™μœΌλ‘œ μ™„λ£Œ μƒνƒœλ‘œ λ³€κ²½λ©λ‹ˆλ‹€.

4. μ•ˆλΆ€ μ „ν™” μ„œλΉ„μŠ€

μ‹œλ‹ˆμ–΄ 등둝 (보호자)

image-13

β€˜λ³΄ν˜Έμžβ€™λŠ” 디지털 μ„œλΉ„μŠ€λ₯Ό μ΄μš©ν•  μ‹œλ‹ˆμ–΄λ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€.

λ§ˆμ΄νŽ˜μ΄μ§€μ˜ β€˜μ‹œλ‹ˆμ–΄ λ“±λ‘ν•˜κΈ°β€™λ²„νŠΌμ„ 눌러 μ‹œλ‹ˆμ–΄λ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€.

μ‹œλ‹ˆμ–΄λ₯Ό λ“±λ‘ν•˜κΈ° μœ„ν•΄ μ‹œλ‹ˆμ–΄μ˜ 성함 및 μ „ν™”λ²ˆν˜Έλ₯Ό μž…λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€ 등둝 (보호자)

image-14

β€˜λ³΄ν˜Έμžβ€™λŠ” μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€λ₯Ό 받을 μ‹œλ‹ˆμ–΄λ₯Ό μ„ νƒν•˜κ³ , μ„œλΉ„μŠ€ 이용 μ‹œκ°„λŒ€ 및 이용 μ‹œκ°„μ„ μ„ νƒν•©λ‹ˆλ‹€.

κ·Έ ν›„ μ„œλΉ„μŠ€ 이용 기간을 μ„ νƒν•˜κ³ , μ•„λž˜μ˜ β€˜ν¬μΈνŠΈ κ³„μ‚°ν•˜κΈ°β€™ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ λΉ„μš©μ„ ν™•μΈν•©λ‹ˆλ‹€.

κ·Έ ν›„ β€˜μ‹œλ‹ˆλ˜β€™ κ°€ μ‹œλ‹ˆμ–΄μ™€ λ‚˜λˆŒ λŒ€ν™”μ˜ 주제λ₯Ό μž…λ ₯ν•˜κ³ , β€˜μ‹ μ²­ν•˜κΈ°β€™ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€ 신청을 μ™„λ£Œν•©λ‹ˆλ‹€.

μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€ 확인 (μ‹œλ‹ˆλ˜)

image-15

β€˜μ‹œλ‹ˆλ˜β€™λŠ” β€˜μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€β€™μ—μ„œ ν˜„μž¬ λŒ€κΈ° 쀑인 μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€ λͺ©λ‘μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ—¬λŸ¬ λͺ©λ‘λ“€ 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜μ—¬ μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€λ₯Ό 진행할 μ‹œκ°„λŒ€λ₯Ό ν™•μΈν•˜λ©°, μ•„λž˜μ˜ β€˜μ„œλΉ„μŠ€ 상세 ν™•μΈν•˜κΈ°β€™λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ μ‹œλ‹ˆμ–΄μ˜ 번호λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.

μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€ 수락 & μˆ˜ν–‰ (μ‹œλ‹ˆλ˜)

image-16

β€˜μ‹œλ‹ˆλ˜β€™λŠ” μ‹œλ‹ˆμ–΄μ˜ μ „ν™”λ²ˆν˜Έ 및 μš”μ²­μ‚¬ν•­μ„ ν™•μΈν•œ ν›„, β€˜μ„œλΉ„μŠ€ μˆ˜λ½ν•˜κΈ°β€™ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.

μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€ μ™„λ£Œ λŒ€κΈ° (μ‹œλ‹ˆλ˜)

image-17 image-18

β€˜μ‹œλ‹ˆλ˜β€™λŠ” μ§€μ •λœ κΈ°κ°„ λ™μ•ˆ μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€λ₯Ό μˆ˜ν–‰ν•˜κ³ , μ„œλΉ„μŠ€ μˆ˜ν–‰κΈ°κ°„μ΄ λλ‚˜λŠ” λ‚ μ§œ 이후에 β€˜μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€ λ³΄κ³ μ„œβ€˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ³΄κ³ μ„œμ—λŠ” μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€ κΈ°κ°„ λ™μ•ˆ μ‹œλ‹ˆμ–΄μ™€ λ‚˜λˆ„μ—ˆλ˜ λŒ€ν™”λ₯Ό μž‘μ„±ν•΄μ•Ό ν•˜λ©°, λ‚΄μš©μ„ μž‘μ„±ν•œ ν›„ β€™λ³΄κ³ μ„œ μ œμΆœν•˜κΈ°β€˜ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ λ³΄κ³ μ„œλ₯Ό μ œμΆœν•©λ‹ˆλ‹€.

μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€ μ™„λ£Œ (보호자)

image-18

β€™λ³΄ν˜Έμžβ€˜λŠ” β€™μ„œλΉ„μŠ€ μ΄μš©λ‚΄μ—­β€˜ νŽ˜μ΄μ§€μ—μ„œ μ™„λ£Œ λŒ€κΈ° μƒνƒœμΈ μ•ˆλΆ€μ „ν™” μ„œλΉ„μŠ€λ₯Ό μ™„λ£Œμƒνƒœλ‘œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ§‘β€πŸ’» κ΄€λ¦¬μž 및 개발자 편의기λŠ₯

1. μ„œλ²„ μ—…λ°μ΄νŠΈ(무쀑단 배포)μ‹œ Slack 채널을 ν†΅ν•œ μ•Œλ¦ΌκΈ°λŠ₯

Github Action을 톡해 μ„œλ²„ μ—…λ°μ΄νŠΈ νŠΈλ¦¬κ±°κ°€ λ°œμƒν•˜λ©΄, μ„œλ²„ 무쀑단배포 μ‰˜μŠ€ν¬λ¦½νŠΈκ°€ μž‘λ™ν•˜λ©° μŠ¬λž™ νŽ˜μ΄μ§€ μ„œλ²„-둜그 μ±„λ„μ—μ„œ λ°±μ—”λ“œ μ„œλ²„ μž¬λΆ€νŒ… 둜그 (ν•˜λ‹¨ 50쀄), 무쀑단 배포 κ΄€λ ¨ κ²°κ³Όλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

μŠ¬λž™ μ΄ˆλŒ€λ§ν¬ : https://join.slack.com/t/sinitto/shared_invite

image

2. μ‚¬μš©μžμ˜ 포인트 μΆ©μ „ 및 좜금 μš”μ²­μ‹œ, Slack 채널을 ν†΅ν•œ μ•Œλ¦ΌκΈ°λŠ₯

보호자의 μΆ©μ „, μ‹œλ‹ˆλ˜μ˜ 좜금 μš”μ²­μ΄ λ“€μ–΄μ˜€λ©΄ κ΄€λ¦¬μžμ˜ μ›ν™œν•œ 확인을 μœ„ν•΄ μŠ¬λž™μ— λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•˜κ³ , λ²„νŠΌμ„ 톡해 μ–΄λ“œλ―ΌνŽ˜μ΄μ§€λ‘œ 접속할 수 μžˆμŠ΅λ‹ˆλ‹€.

μŠ¬λž™ μ΄ˆλŒ€λ§ν¬ : https://join.slack.com/t/sinitto/shared_invite

image

3. 더미데이터 둜그인기λŠ₯

개발 κ³Όμ •μ—μ„œμ˜ κ°œλ°œμžλ“€μ˜ μ‹€μ œ 더미데이터 기반 μ›Ή μ‚¬μš© 및 ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄, Server Side Rendering λ°©μ‹μ˜ 더미데이터 둜그인 νŽ˜μ΄μ§€λ₯Ό κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ„œλ²„μ— μ €μž₯된 λ”λ―Έλ°μ΄ν„°λ‘œλ§Œ 둜그인이 κ°€λŠ₯ν•˜λ©°, κ°œλ°œν™˜κ²½(λ‘œμ»¬ν™˜κ²½μ—μ„œ ν”„λ‘ νŠΈ μ„œλ²„κ°€ μ—΄λ €μžˆμ„ μ‹œ) 및 λ°°ν¬μ„œλ²„λ‘œ 둜그인이 κ°€λŠ₯ν•˜κ³ , λ‘œκ·ΈμΈμ‹œ ν•΄λ‹Ή 더미데이터 μœ μ €μ˜ JWT(AccessToken 및 RefreshToken)을 λ°œκΈ‰ν•˜μ—¬ ν•¨κ»˜ μ „μ†‘ν•©λ‹ˆλ‹€

더미데이터 둜그인 νŽ˜μ΄μ§€ : https://sinitto.site/dummy [λΉ„λ°€λ²ˆν˜Έ : 1234]

image-3 image-3

4. Docker와 CI/CDλ₯Ό ν™œμš©ν•œ ν…ŒμŠ€νŠΈ ν™˜κ²½ 일관성 및 μžλ™ν™”λœ μ½”λ“œ ν’ˆμ§ˆ 관리

1. Dockerλ₯Ό ν†΅ν•œ ν…ŒμŠ€νŠΈ ν™˜κ²½ 일관성

μΌκ΄€λœ ν™˜κ²½: Docker둜 Redis와 MySQL을 μ»¨ν…Œμ΄λ„ˆλ‘œ 관리해, λͺ¨λ“  κ°œλ°œμžμ™€ CI/CD ν™˜κ²½μ—μ„œ λ™μΌν•œ ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ 보μž₯ν–ˆμŠ΅λ‹ˆλ‹€.

λΉ λ₯Έ μ΄ˆκΈ°ν™”: Docker 이미지λ₯Ό 톡해 λ°μ΄ν„°λ² μ΄μŠ€μ™€ μΊμ‹œ μ„œλ²„λ₯Ό λΉ λ₯΄κ²Œ μ„€μ •ν•˜μ—¬, CI/CDμ—μ„œ μ‹œκ°„μ„ μ ˆμ•½ν•˜λ„λ‘ μ‘°μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€.

2. μžλ™ν™”λœ ν…ŒμŠ€νŠΈ 및 μ½”λ“œ ν’ˆμ§ˆ 관리

PR μžλ™ ν…ŒμŠ€νŠΈ: PR 생성 μ‹œ μžλ™μœΌλ‘œ λͺ¨λ“  ν…ŒμŠ€νŠΈκ°€ μ‹€ν–‰λ˜λ©°, μ½”λ“œ λ³€κ²½ 사항에 λŒ€ν•œ 즉각적인 검증이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

κ²°κ³Ό μžλ™ μ½”λ©˜νŠΈ: ν…ŒμŠ€νŠΈ κ²°κ³Όκ°€ PR에 μžλ™μœΌλ‘œ μ½”λ©˜νŠΈλ‘œ 남겨져, 리뷰어가 μ‰½κ²Œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

3. μ‹€νŒ¨ν•œ μ½”λ“œ 라인 ν”Όλ“œλ°±

즉각적 ν”Όλ“œλ°±: μ‹€νŒ¨ν•œ ν…ŒμŠ€νŠΈμ— λŒ€ν•œ μ½”λ“œ 라인이 PR에 ν‘œμ‹œλ˜μ–΄, λΉ λ₯΄κ²Œ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

4. 높은 ν…ŒμŠ€νŠΈ 컀버리지

클래슀 컀버리지 80%: μ£Όμš” λͺ¨λ“ˆ(callback, guard, review λ“±)μ—μ„œ 100% 컀버리지λ₯Ό λ‹¬μ„±ν•˜μ—¬, 높은 μ•ˆμ •μ„±μ„ ν™•λ³΄ν–ˆμŠ΅λ‹ˆλ‹€.

image

[ PR μžλ™ ν…ŒμŠ€νŠΈ μ½”λ©˜νŠΈ ]


image

[ ν…ŒμŠ€νŠΈ Coverage ]

πŸ‘©β€πŸ‘©β€πŸ‘§β€πŸ‘§ ν˜‘μ—… 효율

ν”„λ‘ νŠΈμ—”λ“œ-λ°±μ—”λ“œ κ°„ ν˜‘μ—… κ³Όμ • 쀑 제곡된 apiλ₯Ό μ—°κ²°ν•˜λŠ” κ³Όμ •μ—μ„œ μ†Œν†΅μ— 어렀움이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

ν•™μ—…κ³Ό 병행할 수 μžˆλŠ” μΉ΄μΉ΄μ˜€ν…Œν¬μΊ νΌμŠ€μ˜ νŠΉμ„± 상 μ‘°μ›λ“€λ§ˆλ‹€ κ°œλ°œμ„ μ§„ν–‰ν•˜λŠ” μ‹œκ°„μ΄ 달라 μ‹€μ‹œκ°„μœΌλ‘œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μ–΄λ €μš΄ 문제점이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ λ°±μ—”λ“œ μ„œλ²„λ‘œ apiλ₯Ό 톡해 μš”μ²­μ„ λ³΄λƒˆμ„ λ•Œ, μ—λŸ¬κ°€ λ°œμƒν–ˆμ„ 경우 μžμ„Έν•œ 였λ₯˜ λ©”μ‹œμ§€κ°€ 응닡을 톡해 λ‚˜νƒ€λ‚˜μ§€ μ•Šμ•˜μœΌλ©°, μ‹€μ œ 였λ₯˜ λ‚΄μš©μ€ λ°±μ—”λ“œ μ„œλ²„μ— κΈ°λ‘λ˜λŠ” λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ λ°±μ—”λ“œ λ‹΄λ‹Ή μ‘°μ›μ—κ²Œ μ§ˆλ¬Έμ„ ν•˜λ”λΌλ„ 닡변을 λ°›κΈ° μ „κΉŒμ§€λŠ” κ·Έλ™μ•ˆ ν•˜λ˜ μž‘μ—…μ„ μ§„ν–‰ν•˜μ§€ λͺ»ν•˜λŠ” λ¬Έμ œκ°€ 생겨, 전체적인 개발 속도가 λŠλ €μ§€λŠ” λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 방법을 μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆμ„κΉŒ κ³ λ―Όν•΄λ³΄λ˜ 쀑, κ°€μž₯ λ¨Όμ € λ– μ˜€λ₯Έ 방법은 'μ—λŸ¬ μ½”λ“œκ°€ 생기면 Slack의 채널에 전솑을 ν•˜λŠ” 것' μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

λ°±μ—”λ“œ μ„œλ²„μ—μ„œ μžλ°” νŒŒμΌμ„ μ‹€ν–‰ν•  경우 nohup λͺ…λ ¬μ–΄λ₯Ό 톡해 μ‹€ν–‰ν•˜λŠ”λ°, 이 λ•Œ μžλ°” νŒŒμΌμ„ μ‹€ν–‰ν•œ 기둝이 out ν™•μž₯자 νŒŒμΌμ— λ‚¨κ²Œ λ©λ‹ˆλ‹€. 이 μ€‘μ—μ„œ μ—λŸ¬κ°€ λ°œμƒν•œ 경우 'ERROR' λΌλŠ” 단어가 포함이 λ˜λŠ”λ°, μ΄λŸ¬ν•œ νŒ¨ν„΄μ„ ν™•μΈν•˜μ—¬ 'ERROR'이 ν¬ν•¨λœ 단어가 out ν™•μž₯자 νŒŒμΌμ— 기둝되면 Slack의 'μ„œλ²„-둜그' 채널에 μ „μ†‘λ˜λ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλΆ„λ“€μ΄ μ–΄λ– ν•œ 였λ₯˜μΈμ§€ 확인할 수 있게 ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ ν•œ 가지 λ¬Έμ œκ°€ 더 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 개발 μ–Έμ–΄κ°€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— ν”„λ‘ νŠΈμ—”λ“œμ˜ 경우 μžλ°”μ—μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬μ½”λ“œλ₯Ό μ½λŠ”λ° 어렀움이 μžˆλ‹€λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλΆ„λ“€κ»˜ ν•΄λ‹Ή μ—λŸ¬μ½”λ“œμ— λŒ€ν•΄ 이해가 λ˜λŠ”μ§€ 물어봀을 λ•Œ, μ΄ν•΄ν•˜κΈ°κ°€ μ–΄λ €μ›Œ ChatGPT와 같은 LLM λͺ¨λΈμ— μ—λŸ¬μ½”λ“œλ₯Ό λ³΅μ‚¬ν•˜μ—¬ μ§ˆλ¬Έμ„ ν•œλ‹€λŠ” 닡변을 λ°›μ•˜μŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ λΆˆνŽΈν•¨μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄, ν˜„μž¬ 무료둜 μ΄μš©ν•  수 μžˆλŠ” LLM λͺ¨λΈμΈ Upstage의 'Solar-pro' λͺ¨λΈκ³Ό 연결을 ν•˜μ—¬ 이λ₯Ό ν•΄κ²°ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 기쑴의 μ—λŸ¬μ½”λ“œλ₯Ό Slack에 λ°”λ‘œ μ „μ†‘ν•˜λŠ” λŒ€μ‹ , ν•΄λ‹Ή λ©”μ‹œμ§€λ₯Ό rest μš”μ²­μ„ 톡해 LLM λͺ¨λΈμ— 닡변을 λ°›κ³ , ν•΄λ‹Ή 닡변을 ν¬ν•¨ν•˜μ—¬ μ—λŸ¬μ½”λ“œμ™€ 같이 보내도둝 λ³€κ²½ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 과정을 ν†΅ν•˜μ—¬ 개발 κ³Όμ •μ—μ„œμ˜ μ†Œν†΅μ˜ 어렀움을 ν•΄κ²°ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

μ•„λž˜λŠ” μ‹€μ œ 개발 κ³Όμ •μ—μ„œ μ‚¬μš©λœ λ‚΄μ—­μž…λ‹ˆλ‹€. ν•΄λ‹Ή λ‚΄μš©κ³Ό κ΄€λ ¨λœ μ‰˜ μŠ€ν¬λ¦½νŠΈλŠ” λ°±μ—”λ“œ λ‚΄λΆ€ μ‰˜μŠ€ν¬λ¦½νŠΈ λͺ¨μŒ (https://www.notion.so/3ce05a49e06046469bde14c12b8b9c00) 쀑 'μ„œλ²„μ—λŸ¬ μžλ™ 곡지 κ΄€λ ¨μ½”λ“œ' μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. image

πŸ“‚ 디렉토리 ꡬ쑰

Team8_BE
└── src
    β”œβ”€β”€ main
    β”‚Β Β  β”œβ”€β”€ java
    β”‚Β Β  β”‚Β Β  └── com
    β”‚Β Β  β”‚Β Β      └── example
    β”‚Β Β  β”‚Β Β          └── sinitto
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ auth
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── service
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ callback
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ service
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── util
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ common
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ config
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ dummy
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ exception
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ interceptor
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ properties
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── service
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ guard
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── service
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ guardGuideline
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── service
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ helloCall
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── service
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ member
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── service
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ point
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── service
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ review
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── service
    β”‚Β Β  β”‚Β Β              └── sinitto
    β”‚Β Β  β”‚Β Β                  β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β                  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β                  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β                  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β                  └── service
    β”‚Β Β  └── resources
    β”‚Β Β      β”œβ”€β”€ application-dev.properties
    β”‚Β Β      β”œβ”€β”€ application.properties
    β”‚Β Β      β”œβ”€β”€ keystore.p12
    β”‚Β Β      β”œβ”€β”€ static
    β”‚Β Β      β”‚Β Β  └── css
    β”‚Β Β      └── templates
    β”‚Β Β          β”œβ”€β”€ dummy
    β”‚Β Β          └── point
    └── test
        └── java
            └── com
                └── example
                    └── sinitto
                        β”œβ”€β”€ auth
                        β”‚Β Β  β”œβ”€β”€ entity
                        β”‚Β Β  β”œβ”€β”€ repository
                        β”‚Β Β  └── service
                        β”œβ”€β”€ callback
                        β”‚Β Β  β”œβ”€β”€ entity
                        β”‚Β Β  β”œβ”€β”€ repository
                        β”‚Β Β  β”œβ”€β”€ service
                        β”‚Β Β  └── util
                        β”œβ”€β”€ guard
                        β”‚Β Β  β”œβ”€β”€ entity
                        β”‚Β Β  β”œβ”€β”€ repository
                        β”‚Β Β  └── service
                        β”œβ”€β”€ guardGuideline
                        β”‚Β Β  β”œβ”€β”€ entity
                        β”‚Β Β  β”œβ”€β”€ repository
                        β”‚Β Β  └── service
                        β”œβ”€β”€ hellocall
                        β”‚Β Β  β”œβ”€β”€ entity
                        β”‚Β Β  β”œβ”€β”€ repository
                        β”‚Β Β  └── service
                        β”œβ”€β”€ member
                        β”‚Β Β  β”œβ”€β”€ entity
                        β”‚Β Β  β”œβ”€β”€ repository
                        β”‚Β Β  └── service
                        β”œβ”€β”€ point
                        β”‚Β Β  β”œβ”€β”€ entity
                        β”‚Β Β  └── service
                        β”œβ”€β”€ review
                        β”‚Β Β  β”œβ”€β”€ entity
                        β”‚Β Β  └── service
                        └── sinitto
                            β”œβ”€β”€ entity
                            β”œβ”€β”€ repository
                            └── service

About

πŸ“ž μ „ν™” ν•œ ν†΅μœΌλ‘œ ν•΄κ²°ν•˜λŠ” 디지털 μ„œλΉ„μŠ€ - λ‚˜λ§Œμ˜ μž‘μ€ μ‹œλ‹ˆλ˜

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published