Skip to content

dpTablo/spring-boot-template-reactive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

60 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

spring boot reactive ν”„λ‘œμ νŠΈλ₯Ό μœ„ν•œ ν…œν”Œλ¦Ώ μž…λ‹ˆλ‹€. JPA에 λŒ€ν•œ 섀정도 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

λͺ©μ°¨


μž‘μ„±κΈ°μ€€μΌ : 2023λ…„ 4μ›” 17일

μ£Όμš” λ‚΄μš©μ— λŒ€ν•œ μ„€λͺ…

μ£Όμš” κΈ°μˆ μŠ€νƒ

  • java 17
  • Spring boot 3.0.5
  • gradle 7.5.1 (release 2022.08.05)
  • QueryDSL 5.0.0
  • flyway 9.8.2
  • PostgreSQL 14.6
  • PostgreSQL Driver 42.5.1
  • PostgreSQL R2DBC Driver 1.0.0.RELEASE
  • Mongo DB 6.0.3
  • Spring Kafka
  • restdocs 3.0.0 (with restdocs-api-spec)
  • junit jupiter 5.9.1, assertj 3.23.1
  • testcontainers 1.18.0

spring boot 3.0.0 μ£Όμš” λ‚΄μš©

  • Java 17 베이슀라인
  • μ‹€ν—˜μ μΈ Spring Native ν”„λ‘œμ νŠΈλ₯Ό λŒ€μ²΄ν•˜λŠ” GraalVM으둜 λ„€μ΄ν‹°λΈŒ 이미지 생성 지원
  • Micrometer 및 Micrometer Tracing 으둜 κ΄€μ°° κ°€λŠ₯μ„± ν–₯상
  • EE 9 κΈ°μ€€μœΌλ‘œ Jakarta EE 10 지원

μ„ΈλΆ€λ‚΄μš©μ€ https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes 을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

spring boot 3.0.0κ³Ό spring framework 6.x κ΄€λ ¨ λ¬Έμ„œ λ²ˆμ—­

spring boot 3.0.0 곡식 λ¬Έμ„œλ₯Ό λ²ˆμ—­ν•œ λ‚΄μš©μ„ μ •λ¦¬ν•΄λ‘μ—ˆμœΌλ‹ˆ μ°Έκ³ ν•˜μ‹­μ‹œμ˜€.

java 17 μ μš©μ— κ΄€ν•˜μ—¬

Spring Boot 3.0.0 이 릴리즈 λ˜λ©΄μ„œ Java 17을 베이슀둜 μ§€μ›ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€ (https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga).

Java 17은 Spring Boot 3 μ—μ„œμ˜ κΈ°μ€€ 언어이며 Spring Boot 3.0 μ—μ„œλŠ” Java 19 λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. Java 17은 Java 11 λŒ€λΉ„ LTS 지원 기간이 2026λ…„ 9μ›”κΉŒμ§€ 더 κΈ΄ 지원을 보μž₯ν•©λ‹ˆλ‹€.

blocking IO DB

Spring Data JPA + JDBCλ₯Ό μ‚¬μš©ν•˜μ—¬ ORM ν˜•νƒœμ˜ repository κ΅¬ν˜„ 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€.

일반적으둜 μ‚¬μš©λ˜λŠ” RDBMSλŠ” PostgreSQL μž…λ‹ˆλ‹€.

non-blocking IO DB

κ΄€κ³„ν˜• DB

Spring Reactive Stack 의 R2DBC λ₯Ό μ΄μš©ν•œ repository κ΅¬ν˜„λ°©μ‹μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

일반적으둜 μ‚¬μš©λ˜λŠ” RDBMSλŠ” PostgreSQL μž…λ‹ˆλ‹€.

NoSQL DB

Spring Reactive Stack 의 MongoDB λ₯Ό μ΄μš©ν•œ repository κ΅¬ν˜„λ°©μ‹μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

ν…ŒμŠ€νŒ…

μ•„λž˜μ˜ ν…ŒμŠ€νŒ… ν”„λ ˆμž„μ›Œν¬λ₯Ό 기본적으둜 μ‚¬μš©ν•©λ‹ˆλ‹€.

  • junit5 (with mockito)
  • org.assertj
  • com.squareup.okhttp3:mockwebserver

ν”„λ‘œμ νŠΈ ν‘œμ€€ ꡬ성 μ‚¬μš© μ‹œ μ•Œμ•„λ‘μ–΄μ•Ό ν•  사항

이 spring boot ν”„λ‘œμ νŠΈ ν‘œμ€€μ—μ„œλŠ” μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” λͺ¨λ“  기술 μŠ€νƒμ— λŒ€ν•œ ν”„λ ˆμž„μ›Œν¬ μ˜μ‘΄μ„±κ³Ό μ„€μ •, μ˜ˆμ œμ½”λ“œ 등이 μž‘μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 그리고 적용된 기술 μŠ€νƒμ— λŒ€ν•˜μ—¬ ν•¨κ»˜ μ‚¬μš© κ°€λŠ₯ν•œ 것을 μ „μ œλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ JPA-Datasource와 MongoDB-Reactive λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ‘ μ‚¬μš©ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ‘œ κ°œλ°œμ„ μ‹œμž‘ν•˜κ³ μž ν•  λ•Œ ν”„λ‘œμ νŠΈ ꡬ성을 μ΄ν•΄ν•˜κ³  μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” 뢀뢄을 μ œμ™Έν•œ λ‹€λ₯Έ μ˜μ‘΄μ„±κ³Ό μ„€μ •, μ½”λ“œλ₯Ό μ œκ±°ν•˜κ³  μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.

profile ꡬ뢄

4κ°€μ§€ profile 둜 κ΅¬λΆ„ν•˜κ³  각각의 μš©λ„λ₯Ό κ΅¬λΆ„ν•©λ‹ˆλ‹€. Spring boot μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜κ±°λ‚˜ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•  λ•Œ profile 이 μ§€μ •λ˜μ§€ μ•Šμ€ κ²½μš°λŠ” λͺ¨λ“  profile μƒνƒœμ—μ„œ μˆ˜ν–‰ κ²°κ³Όκ°€ 동일함을 μ˜λ―Έν•©λ‹ˆλ‹€.

tc

κ°€μž₯ μ‹¬ν”Œν•œ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ profile μž…λ‹ˆλ‹€. μ•„λž˜μ˜ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•œ 이 profile 을 μ‚¬μš©ν•©λ‹ˆλ‹€.

λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ profile μž…λ‹ˆλ‹€. 쉽고 κ°„κ²°ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•˜μ—¬ μ•„λž˜μ™€ 같은 μ œμ•½ 사항을 μ „μ œλ‘œ ν•©λ‹ˆλ‹€.

  • μ™ΈλΆ€ μ„œλΉ„μŠ€μ— λŒ€ν•œ μ˜μ‘΄μ„±μ΄ μ—†λŠ” 클래슀 ν•¨μˆ˜μ˜ λ‹¨μœ„ ν…ŒμŠ€νŠΈ
  • mocking 을 μ΄μš©ν•œ ν…ŒμŠ€νŠΈ
  • κ·Έ μ™Έ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•¨μ— μžˆμ–΄ μ‹€ν–‰λ˜λŠ” μ½”λ“œ 외에 ν•„μš”ν•œ 것이 μ—†λŠ” 경우

μ™ΈλΆ€ μ„œλΉ„μŠ€ λ˜λŠ” ν”„λ ˆμž„μ›Œν¬μ— λŒ€ν•œ μ˜μ‘΄μ„±μ΄ μžˆλŠ” κ²½μš°μ—λŠ” testcontainers λ₯Ό ν™œμš©ν•œ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„± ν•©λ‹ˆλ‹€. 이 경우 tc profile 을 μ‚¬μš©ν•˜λ©° ν•„μš”ν•œ 섀정듀을 μΆ”κ°€ν•˜μ—¬ κ΄€λ¦¬ν•©λ‹ˆλ‹€.

local profile 을 μ΄μš©ν•œ ν…ŒμŠ€νŠΈλ„ μ˜μ‘΄λ˜λŠ” μ™ΈλΆ€ μ„œλΉ„μŠ€ λ˜λŠ” ν”„λ ˆμž„μ›Œν¬λ₯Ό μ€€λΉ„ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 것은 λΉ„μŠ·ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ tc profile μ—μ„œλŠ” ν…ŒμŠ€νŠΈ suite λ‹¨μœ„λ‘œ 의쑴 μ„œλΉ„μŠ€κ°€ μ€€λΉ„λ˜κ³  ν…ŒμŠ€νŠΈκ°€ μ’…λ£Œλ˜λ©΄ μ‚­μ œλ©λ‹ˆλ‹€. 의쑴 μ„œλΉ„μŠ€κ°€ νœ˜λ°œμ„±μ„ κ°€μ§€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

local

κ°œλ°œκ³Όμ •μ—μ„œ ν…ŒμŠ€νŠΈ λ˜λŠ” 디버깅을 μœ„ν•œ profile μž…λ‹ˆλ‹€. μ—°κ³„λ˜λŠ” 타 μ„œλΉ„μŠ€λ“€μ„ λ‘œμ»¬ν™˜κ²½μ— κ΅¬μΆ•ν•˜μ—¬ μ„€μ •ν•©λ‹ˆλ‹€. λͺ¨λ“  μ„œλΉ„μŠ€κ°€ λ‘œμ»¬μ— κ΅¬μ„±λ˜μ§€λ§Œ μ‹€μ œμ™€ λ™μΌν•œ μ„œλΉ„μŠ€μž…λ‹ˆλ‹€.

dev

κ°œλ°œμ„œλ²„ ν™˜κ²½μ„ μ˜λ―Έν•©λ‹ˆλ‹€. Spring boot λŠ” κ°œλ°œν™˜κ²½μ—μ„œ μ‹€ν–‰ν•˜μ§€λ§Œ DB μ„œλ²„, λ©”μ‹œμ§• μ„œλ²„ λ“± 연계 μ‹œμŠ€ν…œμ€ κ°œλ°œμ„œλ²„ ν™˜κ²½μ— μ—°κ²°ν•©λ‹ˆλ‹€.

일반적으둜 ν†΅ν•©ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ μ„€μ •μž…λ‹ˆλ‹€.

prod

μš΄μ˜ν™˜κ²½μ„ μ˜λ―Έν•©λ‹ˆλ‹€. μš΄μ˜ν™˜κ²½μ— ν•„μš”ν•œ μ„€μ •λ§Œμ„ μ •μ˜ν•˜κ³  debug 을 μœ„ν•œ 섀정을 μ œκ±°ν•©λ‹ˆλ‹€.

이 profile 은 κ°œλ°œλ‹¨κ³„μ—μ„œλŠ” μ‚¬μš©λ˜μ§€ μ•ŠμœΌλ©° μš΄μ˜ν™˜κ²½μ— 배포λ₯Ό μœ„ν•˜μ—¬ μ‚¬μš©λ˜λŠ” profile μž…λ‹ˆλ‹€.

좔가적인 ν…ŒμŠ€νŠΈ 레벨의 profile μ •μ˜ - tc

test profile 을 μ΄μš©ν•˜μ—¬ in-memory DB에 λŒ€ν•œ ν…ŒμŠ€νŠΈλ₯Ό ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ in-memory DB 의 h2, embeded DB 의 κ²½μš°μ—λŠ” νŠΉμ • λ²€λ”μ˜ DBMS에 λŒ€ν•œ ν…ŒμŠ€νŠΈ 신뒰성을 보μž₯ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

tc profile 에 testcontainers λ₯Ό μ‚¬μš©μ— ν•„μš”ν•œ 사항을 μ„€μ •ν•˜κ³  이λ₯Ό μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μˆ˜ν–‰μ‹œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

IDE ν™˜κ²½μ„€μ •

IDEλŠ” intellij IDEA의 μ‚¬μš©μ„ μ „μ œλ‘œ μ„€λͺ…ν•©λ‹ˆλ‹€. Intellij IDEAλŠ” 2022.3 λ₯Ό κΈ°μ€€μœΌλ‘œ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ•„λž˜μ˜ 섀정은 개발자의 μ„€μ •μ˜ κΈ°ν˜Έμ— 따라 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ³€κ²½ν•˜κ²Œ 되면 ν…ŒμŠ€νŠΈ ν™˜κ²½, QueryDSL μ„€μ •κ³Ό κ΄€λ ¨λœ 뢀뢄이 영ν–₯을 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

Gradle μ„€μ •

Settings > Build, Execution, Deployment > Build Tools > Gradle 에 μ•„λž˜ ν•­λͺ©μ„ μ„€μ •ν•©λ‹ˆλ‹€.

  • Build and run using : IntelliJ IDEA
  • Run tests using : IntelliJ IDEA
  • Gradle JVM : Project SDK

Spring Boot Automatically

Spring Boot 의 μ‹€ν–‰ μƒνƒœμ—μ„œ μ½”λ“œ μˆ˜μ •μ— λŒ€ν•œ μžλ™ λΉŒλ“œ ν›„ reload λ₯Ό μ„€μ •ν•˜λŠ” 방법에 λŒ€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

  1. settings > Build, Execution, Deployment > Compiler 의 ’Build project automatically’ λ₯Ό ν™œμ„±ν™”ν•©λ‹ˆλ‹€.

  1. Spring Boot 의 Run Configuration 의 μ•„λž˜ ν•­λͺ©μ„ μ„€μ •ν•©λ‹ˆλ‹€.
    • Modify Options > On β€˜Update’ action : Update classes and resources
    • Modify Options > On frame deactivation : Update classes and resources

Annotation Prosessing

Intellij의 Settings > Build, Execution, Deployment > Compiler > Annotation Processors μ—μ„œ μ•„λž˜μ™€ 같이 μ„€μ •ν•©λ‹ˆλ‹€. lombok, querydsl λ“± μ–΄λ…Έν…Œμ΄μ…˜κ³Ό κ΄€λ ¨λœ κ°œλ°œν™˜κ²½μ— λŒ€ν•œ λΉŒλ“œ ν΄λž˜μŠ€κ°€ μƒμ„±λ©λ‹ˆλ‹€.

섀정값을 μ•„λž˜ 이미지와 λ‹€λ₯΄κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 경우 λ³€κ²½λœ 사항에 λ§žμΆ”μ–΄ gradleκ³Ό IDE 섀정을 λ³€κ²½ν•΄μ•Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Shorten command line

Intellij μ—μ„œ Spring Boot, JUnit ν…ŒμŠ€νŠΈ λ“± run 을 μ‹€ν–‰ν•  경우 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 경우 Shorten command line 으둜 μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€.

MacOS μ—μ„œλŠ” 였λ₯˜κ°€ λ°œμƒν•˜λŠ” κ²½μš°κ°€ μ—†μ—ˆμœΌλ©° Windows 11 μ—μ„œ λ°œμƒν•˜μ˜€μŠ΅λ‹ˆλ‹€.

API λ¬Έμ„œ μž‘μ„±

ν”„λ‘œμ νŠΈ API λ¬Έμ„œ μž‘μ„±μ€ μ•„λž˜ μ£Όμš” 사항을 μ€€μˆ˜ν•©λ‹ˆλ‹€.

  • Open API 3 Spec으둜 μž‘μ„±ν•©λ‹ˆλ‹€.
  • Open API 3 Spec의 파일 포맷은 YAML둜 μž‘μ„±ν•©λ‹ˆλ‹€.
  • Spring REST Docs 둜 ν…ŒμŠ€νŠΈ 기반의 API λ¬Έμ„œ μž‘μ„±ν•˜λ©°, μž‘μ„±λœ λ¬Έμ„œμ—μ„œ OAS 3 Spec을 μƒμ„±ν•©λ‹ˆλ‹€.
  • epages-restdocs-api-spec 을 μ μš©ν•˜μ—¬ μž‘μ„±λœ restdocs λ₯Ό 기반으둜 OAS 3 Spec을 μƒμ„±ν•©λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ 개발 여건에 따라 λ¬Έμ„œλ₯Ό μž‘μ„±ν•˜λŠ” 방식은 선택할 수 μžˆμŠ΅λ‹ˆλ‹€. κ°€μž₯ ꢌμž₯λ˜λŠ” 방법은 Spring REST Docsλ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

Spring REST Docs 둜 μž‘μ„±ν•  수 μ—†λ‹€λ©΄ μ•„λž˜ 방법을 μ„ νƒν•˜μ‹­μ‹œμ˜€.

  • OAS3 Spec의 java μ–΄λ…Έν…Œμ΄μ…˜μ„ μ΄μš©ν•œ μž‘μ„± 방법 (swagger v3 oas)
  • OAS3 Spec 규격의 YAML λ¬Έμ„œλ₯Ό μž‘μ„± (μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 방법)

OAS3 Spec 규격의 YAML λ¬Έμ„œλ₯Ό μž‘μ„±μ— λŒ€ν•˜μ—¬

src/docs/oas-doc.yaml 에 λ¬Έμ„œ λ‚΄μš©μ„ μž‘μ„±ν•©λ‹ˆλ‹€. μž‘μ„±λœ spec은 검증이 λ˜μ—ˆλ‹€λŠ” 것을 μ „μ œλ‘œ 이λ₯Ό λ°°ν¬ν•©λ‹ˆλ‹€.

λ§Œμ•½ Spring REST Docs λ₯Ό μ‚¬μš©ν–ˆλ‹€λ©΄ μœ„ spec 파일의 λ‚΄μš©μ€ μž‘μ„±ν•˜μ§€ μ•ŠμœΌλ©°, Spring REST Docsλ₯Ό μ΄μš©ν•˜μ—¬ OAS 3 Spec 을 생성해야 ν•©λ‹ˆλ‹€.

Spring REST Docsλ₯Ό OAS 3둜 λ³€ν™˜ν•˜λŠ” 것에 λŒ€ν•˜μ—¬

μ•„λž˜ μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ‘œμ νŠΈλ₯Ό μ΄μš©ν•˜μ—¬ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

https://github.com/ePages-de/restdocs-api-spec

아직 Spring Boot 3.x μ—μ„œ μ‚¬μš©ν•  수 μ—†μœΌλ©°, μΆ”ν›„ μ—…λ°μ΄νŠΈμ— 따라 적용될 μ˜ˆμ •μž…λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±μ— λŒ€ν•˜μ—¬

기본적인 ν…ŒμŠ€νŠΈ μž‘μ„± 원칙

  • Controller, Service, Repository, Component λ“± 각각의 μš”μ†Œλ“€μ€ 각자의 ν…ŒμŠ€νŠΈλ§Œ μˆ˜ν–‰ν•˜κ³  μ£Όμž…λ˜λŠ” 의쑴 ν΄λž˜μŠ€μ— λŒ€ν•œ 것은 mock 객체λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ„±ν•©λ‹ˆλ‹€.
  • Controller ν…ŒμŠ€νŠΈλŠ” ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° μ „λ‹¬λ˜λŠ” request 의 μ²˜λ¦¬μ™€ response 에 λŒ€ν•œ 검증 ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.
  • Service, component ν…ŒμŠ€νŠΈλŠ” 처리 ν”„λ‘œμ„ΈμŠ€ λ‘œμ§μ— λŒ€ν•œ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.
  • Repository ν…ŒμŠ€νŠΈλŠ” DB에 λŒ€ν•œ CRUD κ°€ μ˜¬λ°”λ₯΄κ²Œ 처리 λ˜λŠ”κ°€μ— λŒ€ν•œ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.

testcontainers μ‚¬μš©μ— κ΄€ν•˜μ—¬

ν…ŒμŠ€νŠΈμ˜ λ©±λ“±μ„±κ³Ό μ‹€μ œ μ‚¬μš© DBMS 에 λŒ€ν•œ ν…ŒμŠ€νŠΈ 신뒰성을 μœ„ν•˜μ—¬ Testcontainers (https://www.testcontainers.org/) λ₯Ό μ μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€. Testcontainers λ₯Ό μ΄μš©ν•œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ—μ„œλŠ” λ°μ΄ν„°μ˜ λ‘€λ°±μ΄λ‚˜ 사전 μ€€λΉ„μž‘μ—… 등에 λŒ€ν•œ 처리λ₯Ό ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€.

Testcontainers λ₯Ό μ΄μš©ν•œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μž‘μ„±μ„ κ°•μ œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ°˜λ³΅ν•˜μ—¬ ν…ŒμŠ€νŠΈ 싀행을 ν•  수 μžˆλ„λ‘ κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ λ³„λ„μ˜ μ„œλΉ„μŠ€κ°€ μ€€λΉ„λ˜μ–΄μ•Ό ν•œλ‹€λ©΄ install κ°€μ΄λ“œμ™€ 쀀비과정에 λŒ€ν•œ λ¬Έμ„œλ₯Ό μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ μž‘μ„± κ°€μ΄λ“œ

docker 배포 κ΄€λ ¨ 사항

ν”„λ‘œμ νŠΈμ˜ docker 디렉토리 ν•˜μœ„μ— ν”„λ‘œμ νŠΈμ˜ ν…ŒμŠ€νŠΈμ™€ 싀행을 μœ„ν•œ dockerfile, docker-compose 파일 μ˜ˆμ œκ°€ μž‘μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 각 상황에 맞게 λ³€κ²½ν•˜μ—¬ μ‚¬μš©ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€. μ£Όμš” λ‚΄μš©μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

  • jenkins : jenkins 곡식 docker 이미지에 openjdk-17, docker μ„€μΉ˜κ°€ 적용된 dockerfile
  • local_mariadb : 둜컬 ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ μœ„ν•œ mariadb docker-compose
  • local_mongodb : 둜컬 ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ μœ„ν•œ mongodb docker-compose
  • local_postgres : 둜컬 ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ μœ„ν•œ postgres docker-compose
  • spring-boot : ν”„λ‘œμ νŠΈμ˜ spring boot 배포용 dockerfileκ³Ό docker-compose μž‘μ„±, ν”„λ‘œμ νŠΈ λΉŒλ“œ ν›„ docker 이미지 생성 shellscript, jenkins pipeline 예제
  • swagger : μž‘μ„±λœ OAS λ‚΄μš©μ„ swagger μ„œλ²„λ‘œ μ‹€ν–‰ν•˜κΈ° μœ„ν•œ docker-compose

About

spring boot 3.x blocking & non-blocking boilerplate

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages