0725 ~ 0807
# 0725 ~ 0807
# 0727 - OOM ์ข ๋ฅ ๋ฐ ์กฐ์น
OOM(Out Of Memory) : ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ํ์
Heap
- Java 7 ๊น์ง์ Heap ๊ตฌ์กฐ, 8๋ถํฐ PermGen ๋ถ๋ถ์ด Metaspace๋ก ๋ณ๊ฒฝ๋์๋ค.
- PermGen ์ class ํน์ method ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์ญ์ผ๋ก Heap์์ญ์ ์์นํ๋ค.
- Metaspace๋ Classloader๊ฐ ๋ก๋ํ class ๋ค์ metadata๋ฅผ ์ ์ฅ๋๋ ๊ณต๊ฐ์ผ๋ก Heap์ด ์๋ Native ์์ญ์ ์์น์ํจ๋ค.
- ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ํด๋์ค์ metadata๋ฅผ native ์์ญ์ผ๋ก ์ฎ๊น์ผ๋ก์จ OS๊ฐ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์๋๋ก ํ ๊ฒ
- Runtime Data Area๋ JVM์ด OS๋ก๋ถํฐ ํ ๋น๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋งํ๋ฉฐ ํฌ๊ฒ 5๊ฐ์ง ์์ญ์ผ๋ก ๋๋ ์ ์๋ค.
- Heap์ ๋ฐํ์์ ๋์ ์ผ๋ก ํ ๋นํ์ฌ ์ฌ์ฉํ๋ ์์ญ์ผ๋ก class๋ฅผ ์ด์ฉํด instance๋ฅผ ์์ฑํ๋ฉด Heap์ ์ ์ฅ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์(Memory Leak)
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
- ์์คํ ์์ ๊ด๋ฆฌ์์์ ๋์ค๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ผ๋ก๋ ์ธก์ ์ ์ ํ๋๊ฐ ๋งค์ฐ ๋จ์ด์ง๋ค.
- Runtime ํด๋์ค์ totalMemory() - freeMemory()๋ฅผ ํตํด ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ก๊ทธ๋ก ์ถ๋ ฅ
- long freeMemory() : Returns the amount of free memory in the jvm.
- long totalMemory() : Returns the total amount of memory in the jvm.
- Jprobe ๋๋ Optimizeit์ ๊ฐ์ ๊ฐ๋ฐ๋๊ตฌ๋ก ์ธก์
- ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ์ ์์ธ
- Java์์๋ GC์ ์ํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ ๊ด๋ฆฌ ๋์ง๋ง memory leak๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋ฃจํธ ์ฐธ์กฐ๋ค๋ก๋ถํฐ ์ง๊ฐ์ ์ ์ผ๋ก ์ฐธ์กฐ๊ฐ ๋๋(reachable) ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํ์ฌ ์ฌ์ฉ์ค์ธ ๊ฐ์ฒด๋ผ๊ณ ํ๋จํ๊ณ , ๋๋จธ์ง๋ ์ฐ๋ ๊ธฐ ๊ฐ์ฒด๋ผ๊ณ ํ๋จํ์ฌ JVM์ ์ด๋ฌํ ์ฐ๋ ๊ธฐ ๊ฐ์ฒด๋ฅผ ์๊ฑฐํ๋ค.
- ๋ฃจํธ ์ฐธ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ด ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
- static ๋ณ์์ ์ํ ๊ฐ์ฒด ์ฐธ์กฐ
- ํ์ฌ ์๋ฐ ์ค๋ ๋ ์คํ๋ด์ ์ง์ญ๋ณ์, ๋งค๊ฐ ๋ณ์์ ์ํ ๊ฐ์ฒด ์ฐธ์กฐ
- JNI ํ๋ก๊ทธ๋จ์ ์ํด ๋์ ์ผ๋ก ๋ง๋ค์ด์ง๊ณ ์ ๊ฑฐ๋๋ JNI global ๊ฐ์ฒด ์ฐธ์กฐ
- ํ์ง๋ง, ์ค์ ๋ก ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด์ Reference๋ฅผ ํ๋ก๊ทธ๋จ์์ ์ก๊ณ ์์ผ๋ฉด GC์ ์ํด ์ฒ๋ฆฌ๋์ง ์๊ณ , ํ๋ก๊ทธ๋จ ๋ด์์๋ ์ ๊ทผํ์ฌ ์ฌ์ฉ๋ ์ ์๋ ์ฐ๋ ๊ธฐ ๊ฐ์ฒด๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ๊ฒ ๋๋ค.
- ์ํธ์ฐธ์กฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ ํ๋์ ๊ฐ์ฒด ์ ์กฐ๋ฅผ null์ฒ๋ฆฌ ํด์ฃผ์ง ์๋ ์ค์
- ์ด๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๋ฉฐ OOM์ด ๋ฐ์ํ์ฌ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ ์ฌ๊ฐํ ํ์์ด ๋ฐ์ํ๋ค.
- ๋ฃจํธ ์ฐธ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ด ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
OOME(Out Of Memory Error)
- ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์์ ํ ๊ณต๊ฐ์ ๊ฐ์ฒด๋ฅผ ํ ๋นํ๊ธฐ ์ํ ๊ณต๊ฐ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
- ํด๋น ๊ฒฝ์ฐ GC๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ ๊ณต๊ฐ์ ํ๋ณดํ ์ ์๊ฑฐ๋ GC๋ฅผ ์ํํ๋ ๋ฐ ๊ณผ๋ํ ์๊ฐ์ด ์๋น๋์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ์ํฉ์์ ๋ฐ์ํ ์ ์๋ค.
- ๊ธฐ๋ณธ ํ ๋น์กฐ๊ฑด์ ์ถฉ์กฑํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋์ ์ํด ๋ฐ์ํ ์ ์๋ค.(์ค์ ๊ณต๊ฐ ๋ถ์กฑ)
OOME ์ข ๋ฅ ๋ฐ ์์ธ
- java.lang.OutOfMemoryError : Java heap space(Java ํ ๊ณต๊ฐ)
- ์์ธ
- ์๋ฐ ํ ๊ณต๊ฐ์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์๋ ์ง์ ํ ํ ํฌ๊ธฐ(ํน์ ๊ธฐ๋ณธ ํฌ๊ธฐ)๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ฐ์ํ๋ค.
- ํน์, ์๋ช ์ฃผ๊ธฐ๊ฐ ๊ธด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ finalize๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ ๋ ๋ฐ์ํ๊ธฐ๋ ํ๋ค. (finalize๋ ์๋ฉธ์ ๋ช ์์ ์ผ๋ก ํ ๋ ์ฌ์ฉํ๋ GC์ ๋งํนํ๋ ๋ฐ ์ค๋๊ฑธ๋ฆฌ๋ ๋จ์ ์ด ์๋ค)
- ์กฐ์น
- JVM Option์ ํตํด Heap size๋ฅผ ๋๋ ค ํด๊ฒฐํ ์ ์๋ค.
- ์์ธ
- java.lang.OutOfMemoryError : GC Overhaed limit exceeded(GC ์ค๋ฒํค๋ ํ๋ ์ด๊ณผ)
- ์์ธ
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ์ฌ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์ด๋ฃจ์ด์ก์ง๋ง, ์๋ก ํ๋ณด๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ์ 2% ๋ฏธ๋ง์ผ ๋ ๋ฐ์ํ๋ค.
- ๋ ์ด์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ํ ์ ์์ ์ ๋๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ด๋ค.
- ์กฐ์น
- ํ ํฌ๊ธฐ๋ฅผ ๋๋ฆฐ๋ค.
- XX:-UseGCOverheadLimit ์ ํ์ฌํญ์ ์ถ๊ฐํ์ฌ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ด๊ณผ ์ค๋ฒํค๋ GC ์ ํ ๋ช ๋ น์ ํด์ ํ ์ ์๋ค.
- ์์ธ
- java.lang.OutOfMemoryError: Requested array size exceeds VM limit(์์ฒญ ๋ฐฐ์ด ํฌ๊ธฐ๊ฐ VM ์ ํ ์ด๊ณผ)
- ์์ธ
- ์ ํ๋ฆฌ์ผ์ด์ (ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ API)์ด ํ ๊ณต๊ฐ๋ณด๋ค ํฐ ๋ฐฐ์ด์ ํ ๋น์ ์๋ํ๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
- ํ๊ณต๊ฐ ์ฌ์ด์ฆ๊ฐ ๋๋ฌด ์์๊ฒฝ์ฐ
- ๋ฐฐ์ด ์์๋ฅผ ๊ณ์ฐํ๊ณ ๋ํ๋ ๋ฑ ๋ฐฐ์ด์ ํค์ฐ๋ ๊ฒฝ์ฐ
- ์์ธ
- java.lang.OutOfMemoryError: Metaspace
- ์์ธ
- ์๋ฐ ํด๋์ค ๋ฉํ๋ฐ์ดํฐ๋ ์์ ๋ฉ๋ชจ๋ฆฌ(=๋ฉํ ๊ณต๊ฐ)์ ํ ๋น๋๋ค.
- ํด๋์ค ๋ฉํ๋ฐ์ดํฐ๊ฐ ํ ๋น๋ ๋ฉํ ๊ณต๊ฐ์ด ๋ชจ๋ ์๋ชจ๋๋ฉด ๋ฐ์ํ๋ค.
- ํด๋์ค ๋ฉํ๋ฐ์ดํฐ๊ฐ ํ ๋น๋ ๊ณต๊ฐ์ MaxMetaSpaceSize ๋งค๊ฐ๋ณ์๋ก ์ ํ๋๋ค.
- ์กฐ์น
- MaxMetaSpaceSize ๊ฐ์ ๋๋ ค ์ค์ ํ๋ค. ์๋ฐ ํ๊ณผ ๋์ผํ ์ฃผ์ ๊ณต๊ฐ์ ํ ๋น๋๋ค.
- ์๋ฐ ํ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด ๋ ๋ง์ ๊ณต๊ฐ์ ํ๋ณดํ ์ ์๋ค. ์๋ฐ ํ๊ณต๊ฐ์ ์ฌ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์ ๊ณ ๋ คํด ๋ณผ ์ ์๋ค.
- heap์์ญ๊ณผ perm ์์ญ์ ๊ณผํ๊ฒ ์ค์ ํ๋ฉด, native ์์ญ๊ณผ stack ์์ญ์ด ์ ์ ๊ณต๊ฐ์ผ๋ก ์ค์ ๋์ด ์ด ๋ ์์ญ์ ๊ณต๊ฐ๋ถ์กฑ์๋ฌ๊ฐ ๋ฐ์ ํ ์๋ ์๋ค.
- ์์ธ
- java.lang.OutOfMemoryError: request size bytes for reason. Out of swap space?
- ์์ธ
- ์๋ฐ HotSpot VM ์ฝ๋๊ฐ ๋ค์ดํฐ๋ธ ํ ๊ณ ๊ฐ์ด ๋์ด ๋ค์ดํฐ๋ธ ํ์ ํ ๋นํ ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
- ์ด ๋ฉ์์ง๋ ์คํจํ ์์ฒญ์ ๋ฐ์ดํธ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ ์ด์ ๋ฅผ ๋ํ๋ด๋ฉฐ ๋๊ฐ์ ๊ฒฝ์ฐ ํ ๋น์ ์คํจํ ์์ค ๋ชจ๋์ ์ด๋ฆ์ ์ถ๋ ฅํ๋ค.
- ์กฐ์น
- ๋ค์ดํฐ๋ธ ํ ๊ณ ๊ฐ์ ๊ฒฝ์ฐ๋ ํ ๋ฉ๋ชจ๋ฆฌ ๋ก๊ทธ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋งต ์ ๋ณด๋ฅผ ๋ถ์ํ๋ ๊ฒ์ด ์ ์ฉํ๋ค.
- ์ด๋ฐ ์ ํ์ ์ด์์ฒด์ ์ ๋ฌธ์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ์ง๋จํ ์ ์๋ค.
- ์์ธ
- java.lang.OutOfMemoryError: Compressed class space(์์ถ๋ ํด๋์ค ๊ณต๊ฐ)
- ์์ธ
- 64๋นํธ ํ๋ซํผ์์ ํด๋์ค ๋ฉํ๋ฐ์ดํฐ ํฌ์ธํฐ๋ 32๋นํธ ์คํ์ (UseCompressedOops)์ผ๋ก ํํ๋๋ค. ์ด ๋ฐฉ์์ UseCompressedClassPointers(๊ธฐ๋ณธ๊ฐ ํ์ฑํ, on)์ผ๋ก ์ ์ดํ ์ ์์ผ๋ฉฐ ํ์ฑํ๋๋ฉด ํด๋์ค ๋ฉํ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๋ค.
- UseCompressedClassPointers์ ํ์ํ CompressedClassSpaceSize๋ฅผ ์ด๊ณผํ๋ฉด java.lang.OutOfMemoryError: Compressed class space๋ฅผ ๋์ง๋ค.
- ์กฐ์น
- CompressedClassSpaceSize ํฌ๊ธฐ๋ฅผ ํค์ฐ๊ฑฐ๋ UseCompressedClassPointers๋ฅผ ๋นํ์ฑํ ์ํจ๋ค.
- ์์ธ
- java.lang.OutOfMemoryError: Reason stack_trace_with_native method
- ์์ธ
- ์ด ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ์์ ๋ฉ์๋์์๋ถํฐ ์คํ ํธ๋ ์ด์ค๊ฐ ์ถ๋ ฅ๋์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ๋ค์ดํฐ๋ธ ๋ฉ์๋์ ํ ๋น ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ ์๋ฏธํ๋ค.
- ์ด ๋ฉ์์ง๊ฐ ์์ ๋ฉ์์ง๋ค๊ณผ ๋ค๋ฅธ ์ ์ JVM ์ฝ๋๊ฐ ์๋๋ผ Java Native Interface(JNI) ๋๋ ์์๋ฉ์๋์์ ํ ๋น์คํจ๊ฐ ๊ฐ์ง๋์๋ค๋ ๊ฒ์ด๋ค.
- ์กฐ์น
- ์ด ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์ด์์ฒด์ ๊ฐ ์ ๊ณตํ๋ ์ ํธ๋ฆฌํฐ๋ฅผ ์ด์ฉํด์ ๋ฌธ์ ์ ์ ์ง๋จํด์ผ ํ๋ค.
- ์์ธ
# 0807 - Flyway
# Flyway๋?
DB ์ด๋ ฅ์ ํ์๊ด๋ฆฌ ํ ์ ์๋ ์คํ์์ค ๋๊ตฌ์ด๋ค.
๋ก์ปฌ, ์ํ ๋ฑ ๊ฐ๋ฐ DB์์ ๋ณ๊ฒฝํ Schema, Index, Key ๋ฑ์ ๋ฒ ํ, ์ด์ DB์ ๋๋ฝ๋๋ ๊ฒ์ Flyway๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฉ์งํ ์ ์๋ค. ๋ํ ๋จ์ ํ ์คํธ์์๋ In-Memory DB(H2, derby, Hsqldb ๋ฑ)์ DB DDL์ด๋ ฅ์ ์คํํ์ฌ ์๊ฒฉ๊ณผ ๊ฐ์ DB ํ์์ ์ ์งํ ์ฑ, ๋จ์ ํ ์คํธ๋ฅผ ํ ์ ์๋ค.
flyway๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์คํํ ์ ์๋ค. ๊ณต์ ์ฌ์ดํธ์ ๋ฐ๋ฅด๋ฉด gradle, maven, CLI, JAVA API๋ฑ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
# Flyway ์ฌ์ฉ๋ฒ
# ์์กด์ฑ ๋ฐ ํ๊ฒฝ ์ค์
flyway์ Java API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ org.flywaydb:flyway-core ๋ชจ๋์ ๋ํ ์์กด์ฑ์ด ํ์ํ๋ค
implementation("org.flywaydb:flyway-core:6.5.7")
# yaml ํ์ผ ์ค์
Spring Boot์์๋ flyway์ ๋ํ autoconfigure๋ฅผ ์ง์ํ๋ค.
spring:
datasource:
hikari:
jdbc-url: jdbc:mariadb://localhost:3306/pika
username: pika_app
password: pika_password
flyway:
locations: classpath:/db/migration # migration ํ์ผ๋ค์ด ์์นํ๋ directory
sql-migration-suffixes: ddl # ํ์ผ ํ์ฅ์
baseline-on-migrate: true # flyway_schema_history ํ
์ด๋ธ์ ์๋์ผ๋ก ์์ฑํ ์ง ์ฌ๋ถ
baseline-version: 0 # ์ต์ด ๋ฒ์ ์ ๋ณด
# ๋ง์ด๊ทธ๋ ์ด์ ํ์ผ
flyway์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ์ด๋๋ ๋ชจ๋ ํ์๋ฅผ ๋ฉ์ด๊ทธ๋ ์ด์ (migration)์ด๋ผ๊ณ ํํํ๋ค. ์ด๋ฌํ ๋ง์ด๊ทธ๋ ์ด์ ์ ํ์ผ๋ก ๊ด๋ฆฌ๋์ด ์ง๋ค. ํ์ผ์ ์ด๋ฆ์ ์ง์ ํ๋ ํ์์ด ์กด์ฌํ๋ฉฐ ์ด๋ฅผ ์ง์ผ์ผ ํ๋ค.
- Prefix : V, U, R ์ค ํ๋๋ฅผ ์ ๋ ฅ V๋ Verion, U๋ undo, R์ Repeatable์ด๋ค.
- Version : ๋ฒ์ ์ ๋ณด์ด๋ค. ์ ์, ์์, ๋ ์ง ๋ฑ์ด ๊ฐ๋ฅ
- Seperator : __(underscore 2๊ฐ๋ฅผ ์ฌ์ฉ)
- Description : ์ถ๊ฐ๋๋ ์ค๋ช ์ด๋ค. _๊ฐ space๋ฅผ ๋์ ํ๋ค.
์) V0_create_table_user.sql, V1.1_create_table_game.sql, V20210909_create_table_screenshot.sql
Flyway๋ก ๊ด๋ฆฌ๋ SQL ํ์ผ์ src/main/resources/db/migration
์์น์ ์ ์ฅ๋์ด์ผ ํ๋ค.
# flyway_schema_history ํ ์ด๋ธ
- version์ ํ์ผ์ V๋ค์ ๋ถ์ด์๋ ์ซ์๋ก ๋ฎ์ ์์๋ถํฐ ์คํ๋๋ฉฐ ์คํ ์์๋๋ก ํ ์ด๋ธ์ ์์ด๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
- checksum์ ํ์ผ์ ๋ด์ฉ์ hashingํ ๊ฒ์ด๋ค. ๋ง์ฝ ํ์ผ์ ๋ด์ฉ์ด ๋ฌ๋ผ์ง๋ฉด ์ด ์ฒดํฌ์ฌ์ด ๋ฌ๋ผ์ง๋ค. ํ๋ฒ ์ฒดํฌ์ฌ์ ๋ง๋ค์ด ๋ ํ ํ์ผ์ ์์ ํ ๊ฒฝ์ฐ ํ์๊ด๋ฆฌ์ ๋ฌธ์ ๊ฐ ์๊ฒป๋ค๊ณ ํ๋จํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ด ๊ฒฝ์ฐ ํด๋น ํ์ผ์ ๋ํ ์ฒดํฌ์ฌ์ repair ํ ํ success๋ฅผ 0์ผ๋ก ๋๋ฆฌ๋๋ฑ์ ์์ ์ด ํ์ํ๋ค. (flyway๋ก ๋ฑ๋ก๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก flyway๊ฐ DB๋ฒ์ ์ ๊ด๋ฆฌํ๊ฒ ๋๋ฏ๋ก ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ์์ , ์ญ์ ํ๋ฉด ์๋๋ค.)
- success๋ ํ์ผ ์คํ์ ์ฑ๊ณตํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ด๋ค.