![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|
| μ΄μ€μ§ | νμ§νΈ | μ μ€μ | κ³½μ¬ν | μ‘°μμ |
Gongspotμ μ²λ
λ€μ κ³΅λΆ κ³΅κ° μ 보(νΌμ‘λ, 리뷰)λ±μ 곡μ ν μ μλ μλΉμ€μ
λλ€. SpringBootλ₯Ό κΈ°λ°μΌλ‘ κ°λ°λμμΌλ©°, RESTful APIλ₯Ό ν΅ν΄ ν΄λΌμ΄μΈνΈμ ν΅μ ν©λλ€.
νλ μμν¬
- Spring Boot
- Spring Security (OAuth2, JWT κΈ°λ° μΈμ¦/μΈκ°)
보μ λ° μΈμ¦
- OAuth2 (μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ μ°λ)
- JWT (Access Token + Refresh Token)
- Redis (λΈλ리μ€νΈ μ μ₯ λ° ν ν° κ΄λ¦¬)
λ°μ΄ν°λ² μ΄μ€
- MySQL 8.x
- Hibernate
API λ¬Έμν
- Swagger (springdoc-openapi)
λΉλ λꡬ
- Gradle
λ°°ν¬ λ° CI/CD
- GitHub Actions (λ°°ν¬ μλν)
- AWS EC2 (Ubuntu μλ² μ§μ λ°°ν¬)
- NGINX (리λ²μ€ νλ‘μ + HTTPS)
λλ©μΈ μ£Όλ μ€κ³(DDD, Domain-Driven Design) μ κ΄μ¬μ¬ λΆλ¦¬(Separation of Concerns) μμΉμ κΈ°λ°μΌλ‘ ꡬ쑰ννμμ΅λλ€.
ν΅μ¬ λλ©μΈλ³λ‘ entity, service, controller, repositoryλ₯Ό λλμ΄ μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ λμμΌλ©°, κ³΅ν΅ κΈ°λ₯λ€μ commonκ³Ό global ν¨ν€μ§μ μ§μ€μμΌ μ€λ³΅ λ‘μ§μ λ°©μ§νκ³ μ¬μ¬μ©μ±μ λμμ΅λλ€.
code
- status: κ³΅ν΅ μλ΅ μ½λ, μν μ½λ κ΄λ¦¬
ErrorStatus,SuccessStatus: μλ¬ λ° μ±κ³΅ μνλ₯Ό enumμΌλ‘ μ μBaseCode,BaseErrorCode: κ³΅ν΅ μ½λ λ² μ΄μ€ μΈν°νμ΄μ€ErrorReasonDTO,ReasonDTO: μλ¬ μλ΅ μμΈ λ©μμ§ μ λ¬μ© DTO
entity
BaseEntity: λͺ¨λ μν°ν°μ μμλλ κ³΅ν΅ νλ (createdAt, updatedAt, deletedAt) κ΄λ¦¬
enums
- μ 체 λλ©μΈμμ μ¬μ©νλ κ³΅ν΅ enum λͺ¨μ
- κΈλ‘λ² μμΈ μ²λ¦¬ λ° κ³΅ν΅ μλ¬ κ΄λ¦¬
BaseHandler,ExceptionAdvice,GeneralException: ν΅ν©λ μμΈ νλ¦ μ²λ¦¬ λ° μ»€μ€ν μλ¬ λ©μμ§ μ€μ
response
ApiResponse: μλ΅ ν΅μΌν λ° μΌκ΄μ±μ μν νμ€ μλ΅ ν΄λμ€
ν΅μ¬ λΉμ¦λμ€ λ‘μ§λ³ λλ©μΈ λλ ν 리
alarm/entity ~ search/entity
- κ° ν΄λλ κ°λ³ λλ©μΈ (μλ¦Ό, λ°°λ, μ’μμ, λ―Έλμ΄, μ κ· μ₯μ, μλ¦Ό, μ₯μ, ν¬μΈνΈ, 리뷰, κ²μ, μ μ )μ λμ
entityλλ ν 리 μμλ ν΄λΉ λλ©μΈμ Entity ν΄λμ€λ§ κ΄λ¦¬- μ΄ν νμ μ service, controller, repositoryκ° λμΌν λλ©μΈ λλ ν 리μ μΆκ°λ μ μλλ‘ μ€κ³λ¨
μμ
alarm/entity: Alarm, AlarmType μν°ν°place/entity: Place, Place κ΄λ ¨ 컬λ μ ν μ΄λΈreview/entity: Review, ReviewMedia λ±
config
- κΈλ‘λ² μ€μ νμΌ κ΄λ¦¬
QueryDSLConfig: QueryDSL μ€μ SwaggerConfig: Swagger λ¬Έμν μ€μ - μΆν κΈλ‘λ² μν리ν°, κΈλ‘λ² νν°, κΈλ‘λ² λ©μμ§ μ»¨λ²ν° λ± μΆκ° κ°λ₯
- ν μ€νΈμ© 컨νΈλ‘€λ¬μ μλΉμ€ ν΄λμ€ μμ
Git-flow Strategyλ₯Ό μ±ννμ¬ μ²΄κ³μ μΈ λ²μ κ΄λ¦¬μ νμ νκ²½μ ꡬμΆνμ΅λλ€.
main: μ΅μ’ μ μΌλ‘ μ¬μ©μμκ² λ°°ν¬λλ κ°μ₯ μμ μ μΈ λ²μ λΈλμΉdevelop: λ€μ μΆμ λ²μ μ κ°λ°νλ μ€μ¬ λΈλμΉ. κΈ°λ₯ κ°λ° μλ£ νfeatureλΈλμΉλ€μ΄ λ³ν©feature: κΈ°λ₯ κ°λ°μ© λΈλμΉ.developμμ λΆκΈ°νμ¬ μμrefactor: μ½λ 리ν©ν λ§ μ μ© λΈλμΉ. κΈ°λ₯ λ³κ²½ μμ΄ μ½λ ꡬ쑰 κ°μ μμhotfix: μ΄μ νκ²½ κΈ΄κΈ μμ μ© λΈλμΉ.mainμμ λΆκΈ°νμ¬ μ¦μ μμ νμν λ²κ·Έ ν΄κ²°
API λ¬Έμλ Swaggerλ₯Ό ν΅ν΄ μ 곡λ©λλ€. μλ URLλ‘ μ μνλ©΄ νμΈν μ μμ΅λλ€.
https://api.gongspot.site/swagger-ui/index.html#/




