์คํ๋ง ์ํ๋ฆฌํฐ
์ด๊ธ์์ ์ค.๊ณ ๊ธ์ ์ด๋ฅด๊ธฐ๊น์ง ์คํ๋ง ์ํ๋ฆฌํฐ์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ API ์ฌ์ฉ๋ฒ๊ณผ ๋ด๋ถ ์ํคํ ์ฒ๋ฅผ ํ์ตํ๊ฒ ๋๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ค์ ํ๋ก์ ํธ๋ฅผ ์์ฑํด ๋๊ฐ์ผ๋ก์จ ์คํ๋ง ์ํ๋ฆฌํฐ์ ์ธ์ฆ๊ณผ ์ธ๊ฐ์ ๊ด๋ จ๋ ํต์ฌ์ ์ธ ๊ธฐ์ ๋ค์ ์ตํ๊ฒ ๋ฉ๋๋ค.
์๊ฐ์ 3,770๋ช
๋์ด๋ ์ค๊ธ์ด์
์๊ฐ๊ธฐํ ๋ฌด์ ํ
์๋ ํ์ธ์. ์ง์๊ณต์ ์ ์ ์์์ ๋๋ค. ^^
์ ์ ๊ฐ์๋ฅผ ์ฌ๋ํด ์ฃผ์๊ณ ํ์ด ๋์ด ์ฃผ์๋ ์๊ฐ์๋ถ๋ค๊ป ์ด์ ๊ณง ์คํ ์์ ์ธ ์๋ก์ด ๊ฐ์ข ๊ด๋ จ ์์์ ์ ํด ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.
์ด๋ฒ์ ์คํ ํ ๊ฐ์ข๋
์๋ฐ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ(Java Concurrency Programming)
(๋ถ์ : ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ Part.1)์ ๋๋ค.
์๋ฐ์ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์๋ฐ์ ์ฌ๋ฌ ๊ธฐ์ ์ค์์๋ ์ด๋ ต๊ณ ๋ณต์กํ๋ฉฐ ์ง์ ์ฅ๋ฒฝ์ด ๋์ ์์ญ์ด๋ผ ํ ์ ์์ต๋๋ค.
ํ์ง๋ง ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๋ฉํฐ์ค๋ ๋ ๋ฐ ๋์์ฑ ๊ฐ๋ฐ ์์ญ์ ์์คํ ์ ๊ท๋ชจ๊ฐ ๊ฑฐ๋ํด์ง๊ณ ๊ธฐ์ ์ด ๋ฐ๋ฌํ ์๋ก ๋์ฑ ์ค์ํ ์์๋ก ๋ ์ค๋ฅด๊ณ ์์ต๋๋ค.
๊ทธ๋์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ผ๋ฉด ๋ฐ๋์ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ๋์ด์ผ ํ ์ฐ์ด๋ฉฐ ์์ ์ ์ญ๋์ ํ ๋จ๊ณ ๋ ๋์ด์ฌ๊ธฐ ์ํด ํ์์ ์ผ๋ก ๊ฑฐ์ณ์ผ ํ ๊ด๋ฌธ ์ด๋ผ ํ ์ ์์ต๋๋ค.
์ด๋ฒ ๊ฐ์๋ ์์ผ๋ก ์ ์๋ ์์ ์ธ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ ๋ก๋๋งต์ ํฌํจ๋์ด ์๋ ์ฒซ ๋ฒ์งธ ์๋ฆฌ์ฆ ๊ฐ์์ด๋ฉฐ ์คํ๋ง์ ์น ํ๋ญ์ค์ ๊ฐ์ ๋น๋๊ธฐ ๋ ผ๋ธ๋กํน ๊ฐ๋ ์ ๊น๊ณ ์ ํํ๊ฒ ์ดํดํ๊ธฐ ์ํ ์ค์ํ ๊ธฐ์ด์ ๊ธฐ๋ณธ์ ๋ค์ง๋ ๋ฐ๊ฑฐ๋ฆ์ด ๋ ๊ฒ์ ๋๋ค.
์๋ฌด์ชผ๋ก ์ด๋ฒ ์๋ฐ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์๊ฐ ์ฌ๋ฌ๋ถ๋ค๊ป ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ธ๊ณ๋ก ์๋ดํ๋ ์ข์ ๊ธธ์ก์ด๊ฐ ๋ ์ ์๊ธฐ๋ฅผ ๋ฐ๋ผ๊ฒ ์ต๋๋ค.
์คํ ๋ฐ ๊ฐ์ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ์ ์คํ์ผ : 11 ์ 21 ์ผ ์ดํ ~ 28 ์ ๋๋ก ์์
- ๊ฐ์ ๋ช : ์๋ฐ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ - ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ Part.1
- ๊ฐ์ ์: ์ฝ 80๊ฐ
- ๊ฐ์ ์๋ฃ PPT: ์ฝ 420์ฅ์ด๋ฒ ๊ฐ์์์ ๋ค๋ฃจ๋ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์น์ 1. ์ด์ ์ฒด์ ๊ธฐ๋ณธ
์ด์ ์ฒด์ ์ ๊ธฐ๋ณธ ์๋ฆฌ์ ๋ฉํฐํ์คํน, ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด์ ์ ํ์ตํฉ๋๋ค.
๋ํ Parallel & Concurrent, Context Switch, CPU Bound & I/O Bound, ์ฌ์ฉ์ ๋ชจ๋ & ์ปค๋ ๋ชจ๋ ๋ฑ ํต์ฌ์ ์ธ ์ด์ ์ฒด์ ๊ฐ๋ ์ ํตํด ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ์ด๋ฅผ ์ดํดํ๊ณ , ์ค์ผ์ค๋ง์ ๊ธฐ๋ณธ ์์น์ ๋ฐฐ์๋๋ค์น์ 2. Java Thread Fundamentals - ์ค๋ ๋ ์์ฑ ๋ฐ ์คํ ๊ตฌ์กฐ
์๋ฐ์์ ์ค๋ ๋๋ฅผ ์์ฑ, ์คํ, ์ข ๋ฃ ๋ฐฉ๋ฒ์ ์์ธํ ๋ฐฐ์๋๋ค. ์ค๋ ๋์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฐ ์ํ๋ณ๋ก ์๋ฎฌ๋ ์ด์ ํ๋ฉด์ ๊ฐ ์ํ๋ง๋ค ์ด๋ค ํน์ง๊ณผ ์คํํ๋ฆ์ผ๋ก ๊ฐ์ง๊ณ ์๋์ง ๋จ๊ณ๋ณ๋ก ํ์ตํฉ๋๋ค.์น์ 3. Java Thread Fundamentals - ์ค๋ ๋ ๊ธฐ๋ณธ API
์๋ฐ์ ์ค๋ ๋ ๊ด๋ จ API์ ๋ํ ์ฌ์ธต์ ์ธ ๊ฐ๋ ๊ณผ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํฉ๋๋ค.
sleep, join, interrupt, priority ๋ฑ ๋ฉํฐ์ค๋ ๋ ๊ตฌํ์ ์์ด ๋ฐ๋์ ์์์ผ ํ ๊ฐ๋ ๊ณผ ๋ค์ดํฐ๋ธ ๋ฉ์๋ ์คํ์ ์ํ JVM ๊ณผ OS ๊ฐ ์ฐ๊ฒฐ ๊ตฌ์กฐ ๋ฐ ํ๋ฆ์ ๋ํด ์ฌ๋์๊ฒ ํ์ตํฉ๋๋ค.์น์ 4. Java Thread Fundamentals - ์ค๋ ๋ ํ์ฉ
์ค์ ํ๋ก์ ํธ์์ ์ค๋ ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.
์ค๋จ ๋ฐ ๋ณต๊ตฌ ๋ฑ์ ์ฃผ์ ๋ฅผ ๋ค๋ฃจ๋ฉฐ, ์ค๋ ๋ ๊ทธ๋ฃน๊ณผ ์ค๋ ๋ ๋ก์ปฌ, ์ค๋ ๋ ์์ธ์ฒ๋ฆฌ ๋ฑ์ ๋ํด ํ์ตํฉ๋๋ค.์น์ 5. Synchronization Fundamentals - ๋๊ธฐํ ๊ฐ๋
๋๊ธฐํ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์์ ์ค์์ฑ์ ๊น์ด ์๊ฒ ํ์ตํฉ๋๋ค.
๋๊ธฐํ์ CPU ์์ ๊ด๊ณ, Critical Seciton, ์์ ํ ์ค๋ ๋ ๊ตฌ์ฑ ๋ฑ ๋๊ธฐํ ๊ธฐ๋ฒ์ ์ดํดํ๊ธฐ ์ํ ๊ธฐ์ด์ ์ธ ๊ฐ๋ ์ ์ฌ๋์๊ฒ ํ์ตํฉ๋๋ค.์น์ 6. Synchronization Fundamentals - ๋๊ธฐํ ๊ธฐ๋ฒ
๋๊ธฐํ์ ๋ค์ํ ๊ธฐ๋ฒ๊ณผ ๊ทธ ์ ์ฉ ๋ฐฉ๋ฒ์ ์ฌ์ธต์ ์ผ๋ก ๋ค๋ฃน๋๋ค.
๋๊ธฐํ ๊ธฐ๋ฒ์ธ ๋ฎคํ ์ค, ์ธ๋งํฌ์ด, ๋ชจ๋ํฐ, Spin Lock ๋ฑ ๋ฝ์ ๊ฐ๋ ๊ณผ ๋๊ธฐํ๋ฅผ ์ฌ์ฉํ ๋ฐ์ดํฐ ๋ณดํธ ๋ฐ ์ผ๊ด์ฑ ์ ์ง ์ ๋ต์ ๋ฐฐ์๋๋ค.์น์ 7. Java Synchronization
์๋ฐ์์ ์ ๊ณตํ๋ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ธต์ ์ผ๋ก ํ์ตํฉ๋๋ค.
Synchronized ์ ๊ฐ๋ , ์กฐ๊ฑด ๋ณ์, volatile, ๊ต์ฐฉ์ํ ๋ฑ์ ํฌํจํ์ฌ ์๋ฐ์์ ์ ๊ณตํ๋ ๋ค์ํ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ๋ค๋ฃน๋๋ค.์น์ 8. Java Locks
์๋ฐ์ ๋ฝ(Lock) ์ธํฐํ์ด์ค์ ๋ค์ํ ํํ์ ํด๋์ค๋ค์ ์์๋ณด๊ณ Lock ์ฌ์ฉ๋ฒ ๋ฐ Lock ์ ํตํ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค.
ํนํ ์ฐ๊ธฐ๋ฝ๊ณผ ์ฝ๊ธฐ๋ฝ์ ํน์ง๊ณผ ์ฅ๋จ์ ๋ฑ์ ์ดํด๋ณด๊ณ ๋ฝ์ ์กฐ๊ฑด๋ณ์ ํ์ฉ๋ฒ๊ณผ ์ค๋ฌด ์์ ๋ฅผ ํตํ ์ ํํ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ตํ ์ ์๋๋ก ํฉ๋๋ค.์น์ 9. Java ๋๊ธฐํ ๋๊ตฌ
์๋ฐ์์ ์ ๊ณตํ๋ ๋ค์ํ ๋๊ธฐํ ๋๊ตฌ๋ค์ ํ์ตํฉ๋๋ค.
Atomic Variables (๋จ์ผ์ฐ์ฐ๋ณ์), Atomic * FieldUpdater(๋จ์ผ์ฐ์ฐํ๋์ ๋ฐ์ดํธ), ์นด์ดํธ๋ค์ด ๋์น, ์ฌ์ดํด๋ฆญ ๋ฐฐ๋ฆฌ์ด ๋ฑ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ค์ง์ ์ธ ์ ์ฉ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค.์น์ 10. ์๋ฐ ๋์์ฑ ํ๋ ์์ํฌ
์๋ฐ์์ ์ ๊ณตํ๋ Executor, ExecutorService ๋ฐ Executors ํด๋์ค๋ค์ ๊ฐ๋ ๊ณผ ํน์ง์ ์ดํดํ๊ณ ์ค๋ ๋ ํ์ ์ฌ์ฉํ์ฌ ๋ฉํฐ์ค๋ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.
๋ํ Future ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋น๋๊ธฐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๊ณ ๊ด๋ฆฌํ๋์ง์ ๋ํ ์ค๋ฌด์ ์ธ ์ง์์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฌํ ๊ฐ๋ ๋ค์ ์ค์ ์ฌ๋ก์ ์ค์ต์ ํตํด ์ ์ฉํจ์ผ๋ก์จ, ๋ณต์กํ ๋์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ์๋ต์ฑ๊ณผ ์ฑ๋ฅ์ด ์ฐ์ํ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๊ฒ ๋ฉ๋๋ค.์น์ 11. ThreadPoolExecutor
ThreadPoolExecutor์ ์๋ฆฌ์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์์ธํ ๋ฐฐ์๋๋ค.
์ด ์น์ ์์๋ ์ค๋ ๋ ํ์ ์์ฑ, ๊ด๋ฆฌ, ์ต์ ํ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๋ฉฐ, ์ค๋ ๋ ํ์ ์ฌ์ฉํ ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์์ธ ์ฒ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ๋ฒ ๋ฑ์ ๋ํด ํ์ตํ๋ฉฐ ์ ์ฒด ์ํคํ ์ฒ์ ํ๋ฆ๋์ ๋ํด ์ดํด ๋ด ๋๋ค์น์ 12: CompletableFuture
์๋ฐ์ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฅ์ธ CompletableFuture์ ๋ํด ๊น์ด ์๊ฒ ๋ค๋ฃน๋๋ค.
์๋ฐ 8์์ ๋์ ๋ ์ด ๊ฐ๋ ฅํ ํด๋์ค๋ฅผ ํตํด, ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ ์์ํ์ฌ, ์ค์ ์์ ํ๋ฆ์ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
๊ฐ ์ธ์ ์ CompletableFuture์ ๋ค์ํ ๋ฉ์๋์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์ธํ ์ค๋ช ํ๋ฉฐ, ์์ธ ์ฒ๋ฆฌ, ๊ฒฐ๊ณผ ์กฐํฉ, ๊ทธ๋ฆฌ๊ณ ๋น๋๊ธฐ ์์ ์ฐ์ ๋ฑ์ ๋ํ ์ค์ฉ์ ์ธ ๊ธฐ๋ฒ๋ค์ ํ์ตํฉ๋๋ค.์๋ ํ์ธ์^^
์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 (Spring Boot ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ Spring Security OAuth2)
๊ฐ์ข๊ฐ ๋๋์ด ์คํ๋์์ต๋๋ค
์์๋ณด๋ค ๋ค์ ๋ฆ์ด์ก์ง๋ง ์คํ ์์์ด ๋ ๊ธฐ์ฉ๋๋ค^^
์คํ ๊ธฐ๋ ์ผ๋ก ์ ๊ฐ์ ํฌํจํ์ฌ ์ ์ ๋ชจ๋ ๊ฐ์๋ฅผ 30% ํ ์ธ ์ด๋ฒคํธ๊ฐ ์งํ์ค์ด์ค๋ ํ ์ธ๋ ๊ฐ๊ฒฉ์ผ๋ก ์๊ฐํ์๊ธธ ๋ฐ๋๋๋ค.
์ด๋ฒ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ๊ฐ์ข๋ ์ธํฐ๋ท ํ์ค์ผ๋ก ์ง์ ๋ OAuth 2.0 ์ ๊ธฐ์ ์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
์ด ๊ฐ์ข๋ฅผ ์๊ฐํ์ ํ์๋ OAuth 2.0 ์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ์ ๋ฟ ์๋๋ผ OAuth 2.0 ๊ธฐ์ ์ ํ์ฉํ์ฌ ๋์ฑ ํ์ฅ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ ์ญ๋์ ๊ธฐ๋ฅด๋๋ฐ ์ค์ ์ ๋์๋ค๊ณ ํ ์ ์์ต๋๋ค.
OAuth 2.0 ๊ธฐ์ ์ ํ์ฉํ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๊ด์ฌ์ด ์๊ฑฐ๋ ์ค๋ฌด์ ์ผ๋ก ํ์ ์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋ชจ๋ ์๊ฐ์ ์ฌ๋ฌ๋ถ๋ค์๊ฒ ์ด ๊ฐ์ข๊ฐ ๋์์ด ๋ ์ ์๊ธฐ๋ฅผ ์ง์ฌ์ ๋ฐ๋๋๋ค
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์. ^^
์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ๊ฐ์๊ฐ ๊ณง ์คํ ์์ ์ ์์ต๋๋ค.
์คํ๋ง ์ํ๋ฆฌํฐ 1ํธ ๊ฐ์์ ์ด์ 2ํธ ๊ฐ์๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๊ณตํต๋ถ๋ชจ๊ฐ ์กด์ฌํ๊ธฐ๋ ํ์ง๋ง ์ฃผ์ ๋ ํ์ฐํ ๋ค๋ฅด๊ณ 1ํธ๊ฐ์์ ์ฌ์ ์ง์์ ํ์๋ก ํฉ๋๋ค.
๊ฐ์๋ฅผ ์ ์ํ๋ฉด์ ๋งค๋ฒ ๋๋ผ๋ ๊ฑฐ์ง๋ง ์ด๋ฒ ๊ฐ์ ์ญ์ ์ฒ์ ์ค๊ณํ๋ ๊ฒ ๋ณด๋ค ๋ง์ ์๊ฐ๊ณผ ์๋์ง๊ฐ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฑฐ์ 1๋ ๋ง์ ์ธ์์ ์ถ์๊ฐ ๋๋ค์~~
์ด์ฌํ ์ค๋นํ๋งํผ ์ด๋ฒ ๊ฐ์๊ฐ ์๊ฐ์๋ถ๋ค ๋ชจ๋์๊ฒ ์ข์ ๊ฒฐ์ค๋ก ๋ค๊ฐ๊ฐ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.์คํ ์์ ์ผ์ 10 ์ 14 ~ 16 ์ผ๊ฒฝ ์ ๋ ์์ํ๊ณ ์์ต๋๋ค.
- ๊ฐ์๋ช : ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2
- ๊ฐ์ ์: 110๊ฐ ๋ด์ธ
- ๊ฐ์ ์๋ฃ PPT: 420์ฅ์ด๋ฒ ๊ฐ์์์ ๋ค๋ฃจ๋ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ํต์ฌ ์ดํด
OAuth2.0 ํ์ค ๊ธฐ์ ๊ณผ ์ด๋ฅผ ๋ฐํ์ผ๋ก ํ์ฌ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ์ ํต์ฌ ๊ฐ๋ ์ธ OAuth2 Client, Resource Server, Authorization Server ์ ์ธ๊ฐ์ง ์ถ์ ์ค์ฌ์ผ๋ก ๊ฐ์๊ฐ ์งํ๋ฉ๋๋ค.
1) OAuth 2.0 Authorization Framework
RFC ํ์ค ๊ธฐ์ ์ธ OAuth 2.0 ์ธ๊ฐ ํ๋ ์์ํฌ์ ์ ๋ฐ์ ์ธ ๊ฐ๋ ๊ณผ ์๋ฆฌ, ๊ตฌ์กฐ ๋ฑ์ ๋ด์ฉ์ ์ดํด๋ด ๋๋ค.
์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ์ ๋ณธ๊ฒฉ์ ์ธ ๊ธฐ์ ์ ํ์ตํ๊ธฐ ์์ OAuth 2.0 ์ ํ์ค ๊ธฐ์ ์ ๋ํ ๊ธฐ์ด์ ๊ธฐ๋ณธ์ ์ธ ์ด๋ก ์ ๋จผ์ ์ดํดํ๊ณ ์ค์ต์ ํตํด ์ ํํ ๊ฐ๋ ์ ์์งํจ์ผ๋ก์ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ์ ๋ด์ฉ์ ์ด๋ ค์ ์์ด ๋ฐ๋ผ ๊ฐ ์ ์๋๋ก ํฉ๋๋ค.2) OAuth2 Client
OAuth 2.0 ์ ํด๋ผ์ด์ธํธ ๋ชจ๋๋ก์ ํด๋ผ์ด์ธํธ์์ ์ธ๊ฐ ์๋ฒ์ ์ฐ๋ํ ์ ์๋ ์ฌ๋ฌ ์ ํ์ ๊ถํ ๋ถ์ฌ ํ์ ๊ณผ ์์ฒญ API๋ฅผ ์๊ฐํ๋ฉฐ ์ธ๊ฐ์๋ฒ๋ก๋ถํฐ ๋ฐ๊ธ๋ฐ์ ํ ํฐ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์๋ฒ๋ก์ ์ ๊ทผ์ ์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๋๊ฐ์ ๋ํ ๋ด์ฉ์ ํ์ตํฉ๋๋ค.
๋ํ ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ๊นํ, ๋ค์ด๋ฒ , ์นด์นด์ค ๋ฑ OAuth 2.0 Authorization Server ์๋น์ค ์ ๊ณต์์์ ์ฐ๋์ ํตํด ์์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ธ์ฆ ํ๋กํ ์ฝ์ธ OpenID Connect ๋ฅผ ์๊ฐํ๋ฉฐ ์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ค์ํ ์ต์ ์ค์ ๋ฐฉ๋ฒ๊ณผ ํ๋ฆ์ ์ดํดํฉ๋๋ค.3) OAuth2 Resource Server
์ฌ์ฉ์์ ์์์ ๋ณดํธํ๊ณ ์๋ ์๋ฒ๋ก์ API ์๋ฒ ๋ก์์ ์ญํ ์ ํ๊ฒ ๋ฉ๋๋ค.
๋ฆฌ์์ค ์๋ฒ๊ฐ ์์์ ๋ณดํธํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ณ Access Token ์ ํฌํจํ ์์ฒญ์ ๋ํด์ ํ ํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ถํ์ฒด๊ณ๋ฅผ ์ ์ดํ๋ ํ๋ฆ์ ๋ํด ํ์ตํฉ๋๋ค.OAuth2 ์๋น์ค ์ ๊ณต์์์ ๋ฐ๊ธํ๋ Access Token ์ด JWT ํฌ๋งท์ผ๋ก ์์ฑ๋ ํ ํฐ์ผ ๊ฒฝ์ฐ Scope(๋ฒ์) ๋ฅผ ์ถ์ถํ๋ ๋ด์ฉ์ ์ดํด๋ณด๊ณ ๋ฆฌ์์ค ์๋ฒ์์ Access Token ์ ํฌํจ๋ Scope ๋ฅผ ๋ถ์ํ์ฌ ๊ถํ์ฌ๋ถ๋ฅผ ์ด๋ป๊ฒ ํ๋ณํ๋์ง ๋ด์ฉ์ ํ์ตํฉ๋๋ค.
4) OAuth2 Authorization Server
์์ค์๋ ์คํ ์์ค๋ฅผ ํฌํจํ ๋ค์ํ Authorization Server ์์ฉ ์ ํ ๋ฐ ์๋น์ค๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ์ด์ ๋ก ์คํ๋ง ์ํ๋ฆฌํฐ ๊ฐ๋ฐํ์์ Authorization Server ํ๋ ์์ํฌ ํ๋ก์ ํธ๋ฅผ ์ค๋จํ๊ธฐ๋ ํ์ง๋ง ์๋ง์ ๊ฐ๋ฐ์๋ค์ ๋น๋ฐ์น๋ ์์ฒญ์ผ๋ก Authorization Server ํ๋ก์ ํธ๊ฐ ์์ ํ ์๋ก์ด ์ค๊ณ๋ก ๋ค์๊ธ ํ์ํ์ต๋๋ค.
๋ณธ ๊ฐ์ข์์๋ ์๋ก์ด ์ํคํ ์ฒ๋ก ์ฌ ํ์ํ Authorization Server ํ๋ก์ ํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์๋ฅผ ์ ์ํ์ผ๋ฉฐ OAuth2 Client ์ Resource Server ์์ ์ฐ๋์ ํตํ ์ธ๊ฐ์๋ฒ๋ก์์ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ดํด๋ณด๋ฉฐ ์์ฒด์ ์ผ๋ก ์ธ๊ฐ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ฌ ์๋น์คํ ์ ์๋ ์ง์์ ๊ฐ์ถ๋๋ก ํ๋๋ฐ ์ค์ ์ ๋์์ต๋๋ค.Authorization Server ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ ์ฃผ์ ํด๋์ค๋ฅผ ์์๋ณด๊ณ ์ปค์คํธ๋ง์ด์ง ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
๋ํ OAuth 2.0 ํ์ค ์๋ํฌ์ธํธ์ ๋ํ ์ฌ์์ ์ดํด๋ณด๊ณ ๊ฐ ์๋ํฌ์ธํธ๋ง๋ค ์ค์ ๋ ํํฐ๋ค์ ๊ตฌ์กฐ์ ์ฒ๋ฆฌ๊ณผ์ ์ ํ์ตํฉ๋๋ค.2. ํ์ต ์ปค๋ฆฌํ๋ผ
Spring Security Fundamentals
์คํ๋ง ์ํ๋ฆฌํฐ์ ํต์ฌ ๊ธฐ์ด๋ฅผ ์ดํด๋ด ๋๋ค.
์ด๊ธฐํ ๊ณผ์ ์ ๋ํ ์์ธํ ๋ด์ฉ๊ณผ ์๋ฆฌ๋ฅผ ์์๋ณด๊ณ HttpBasic, Cors ์ ๊ฐ์ ์์์ ๋ค๋ฃจ๊ฒ ๋ฉ๋๋ค.OAuth 2.0 Authorization Framework
OAuth 2.0 ํ์ค ๊ธฐ์ ์ ๋ํ ์์ธ ์ฌ์์ ๋ํด ํ์ตํฉ๋๋ค.
OAuth 2.0 ์์ ํํ๋๋ ๋ค์ํ ์ฉ์ด๋ฅผ ๋จผ์ ์ดํดํ๊ณ ๊ถํ๋ถ์ฌ ํ๋ฆ์ ํ์ ์ ๋ํ ๊ฐ๋ ์ ๋ฆฌ์ keycloak ์คํ ์์ค๋ฅผ ํ์ฉํด ์ธ๊ฐ ํ๋ ์์ํฌ์ ์ ๋ฐ์ ์ธ ํ๋ฆ์ ์ดํดํฉ๋๋ค.OAuth 2.0 Client - oauth2Login()
ํด๋ผ์ด์ธํธ ์ฑ์ ๊ธฐ๋ฅ์ ์๋ํํ๋ฉฐ ๊ถํ๋ถ์ฌ ํ๋ฆ์ ํ์ ์ธ Authorization Code ๋ฐฉ์์ผ๋ก ์ธ๊ฐ์๋ฒ์์ ์ฐ๋๋ฐฉ๋ฒ์ ํ์ตํ๋ฉฐ ์ฌ์ฉ์ ์น์ธ๊ณผ ์น์ธ ์ดํ Access Token ์ ๋ฐ์์ ์ธ์ฆ/์ธ๊ฐ ์ฒ๋ฆฌ์ ์ด๋ฅด๊ธฐ๊น์ง์ ์ ๊ณผ์ ์ ์ดํด๋ณด๊ณ ๋ด๋ถ๊ตฌ์กฐ์ ๋ํด ํ์ตํ๊ฒ ๋ฉ๋๋ค.OAuth 2.0 Client - oauth2Client()
oauth2Login() API ์์ ์ ๊ณตํ๋ ๊ถํ๋ถ์ฌ ํ๋ฆ์ ํ์ ์ธ Authorization Code ์ธ์ Resource Owner Password ์ Client Credentials ํ์ ์ผ๋ก ์ธ๊ฐ์๋ฒ์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๋ฉฐ DefaultOAuth2AuthorizedClientManager, @RegisteredOAuth2AuthorizedClient ์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์์๋ณด๊ณ ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ ๊ถํ๋ถ์ฌ ํ๋ฆ์ ์ดํดํฉ๋๋ค.OAuth 2.0 Client - OAuth 2.0 Social Login
OAuth2 ์๋น์ค ์ ๊ณต์๋ก ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ๊นํ, ๋ค์ด๋ฒ, ์นด์นด์ค ๋ฑ์ด ์๋๋ฐ ์ด์ค ๊ตฌ๊ธ, ๋ค์ด๋ฒ, ํคํด๋ก์ผ๋ฅด ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธ ์ธ์ฆํ๋ ๋ฐฉ์๊ณผ ์ธ์ฆ ์ดํ ํ์์ฒ๋ฆฌ์ ๋ํ ๊ตฌํ๋ฐฉ๋ฒ์ ์ดํด๋ด ๋๋ค.OAuth 2.0 Resource Server API - jwt()
๋ฆฌ์์ค ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ Access Token ์์ฒญ์ ์ฒ๋ฆฌํ๋ JwtDecoder ์ ๊ธฐ๋ฅ์ ์ดํด๋ณด๊ณ ํ ํฐ ๊ฒ์ฆ์ ์ฑ๊ณต์ดํ ์์ฑ๋๋ ์ธ์ฆ๊ด๋ จ ๊ฐ์ฒด์ ๊ตฌ์กฐ์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค.
๋ํ Access Token ์ ์ ํจ์ฑ์ ๊ฒ์ฆํ ๋ ์ฌ์ฉ๋๋ MAC & RSA ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ์์ด ๋ฌด์์ด๋ฉฐ ์ด๋ค ์ฒ๋ฆฌ์ ์ฐจ์ ์ํด ๊ฒ์ฆ์ด ์ด๋ฃจ์ด์ง๋์ง ์ดํด๋ด ๋๋ค.OAuth 2.0 Resource Server - ๋ฆฌ์์ค ์๋ฒ ๊ถํ ๊ตฌํ
Access Token ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํํฐ์ JwtDecoder ์ ์ํด ์ถ์ถ๋ Scope ๋ฅผ ๊ถํ์ผ๋ก ๋ณํํ๊ณ ๋ณํ๋ ๊ถํ์ผ๋ก ์์์ ์ ๊ทผ์ฌ๋ถ๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ตํฉ๋๋ค.OAuth 2.0 Resource Server - opaque()
์๊ฒฉ ํ ํฐ ๊ฒ์ฌ ํ๋ก์ธ์ค๋ก์ Access Token ์ ํ์ฑํ ์ฌ๋ถ๋ฅผ ์ธ๊ฐ์๋ฒ์ ์ง์ ํต์ ํ์ฌ ์์๋ณด๋ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค.Spring Authorization Server - ์ฃผ์ ๋๋ฉ์ธ ํด๋์ค
์ธ๊ฐ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๋ ์ฃผ์ ๋๋ฉ์ธ ํด๋์ค์ ์ข ๋ฅ์ ๊ฐ๋ , ์ญํ ๋ฑ์ ํ์ตํ๋ฉฐ ์ด ํด๋์ค๋ค์ด ์คํ๋ง MVC ์์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฐธ์กฐ ๋ฐ ํ์ฉ์ด ๊ฐ๋ฅํ์ง ํ์ตํฉ๋๋ค.Spring Authorization Server - ์๋ํฌ์ธํธ ํ๋กํ ์ฝ
์ธ๊ฐ์๋ฒ์ ํต์ฌ๊ธฐ๋ฅ์ธ ์ฌ๋ฌ ์ ํ์ ์๋ํฌ์ธํธ ํ๋กํ ์ฝ์ ๋ํด ํ์ตํฉ๋๋ค.
๊ถํ ๋ถ์ฌ ์์ฒญ์ ์์ํ ์๋ํฌ์ธํธ ๋ถํฐ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ์๋ํฌ์ธํธ๊น์ง์ ์ ๊ณผ์ ์ ๋์๊ณผ ํ๋ฆ์ ํตํด ์์ธํ๊ฒ ์ดํด๋ณด๊ฒ ๋ฉ๋๋ค.OAuth 2.0 Client + Resource Server + Authorization Server ์ฐ๋
์คํ๋ง ์ํ๋ฆฌํฐ์์ ์ ๊ณตํ๋ ๊ฐ OAuth2 ์ ๋ชจ๋๋ค์ ์ฐ๊ณ ๋ฐ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ณ ์ด๋ฅผ ํตํด OAuth2 ์๋น์ค ์ ๊ณต์๋ก์์ ๊ธฐ๋ฅ์ ์ํํ๋ ๊ตฌ์ฒด์ ์ธ ํญ๋ชฉ๋ค์ ์์ ๋ฅผ ํตํด ์ดํด๋ณด๊ฒ ๋ฉ๋๋ค.3. ์ํคํ ์ฒ/ํ๋ฆ/์๋ฆฌ ์ดํด
์คํ๋ง ํ๋ ์์ํฌ ํ๋ก์ ํธ ๊ฐ์ด๋ฐ ์คํ๋ง ์ํ๋ฆฌํฐ๋ ๊ธฐ์ ์ํคํ ์ฒ, ๋์์๋ฆฌ, ํ๋ฆ ์ดํด ๋ฑ์ ๋ด๋ถ ์์ค ๋ ๋ฒจ์ ๊ตฌํ์ ๋ํ ์ ๋ฐ์ ์ธ ์ดํด๊ฐ ๊ต์ฅํ ์ค์ํฉ๋๋ค.
์ฃผ์ด์ง API ์์ฃผ๋ก ์ฌ์ฉํ๋ค๊ฐ ์๊ธฐ์น ๋ชปํ ์ค๋ฅ๋ ์ด์์ํฉ์ ๋ถ๋ช์น๊ฒ ๋๋ฉด ๊ตฌ๊ธ ๊ฒ์ํด์ ํด๊ฒฐ๋ฐฉ์์ ์ฐพ๊ฒ ๋์ง๋ง ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ์ ๊ดํ ์๋ฃ๋ค์ด ๋ง์ง ์๊ณ ๋๋ถ๋ถ ๋น์ทํ ์ฌ๋ก๋ค์ด ๋ฐ๋ณตํด์ ๋์ค๋ ์์ค์ด๊ธฐ ๋๋ฌธ์ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ์ ๋ด๋ถ ๊ตฌ์กฐ์ ๋์์๋ฆฌ๋ฅผ ์ ํํ๊ฒ ์ดํดํ์ง ๋ชปํ๊ฑฐ๋ ๋ถ์์ด ๋์ง ๋ชปํ๋ค๋ฉด ์๋น์ค ์ด์์ ๋ง์ ์ด๋ ค์์ ๊ฒช๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ณธ ๊ฐ์ข์์๋ ๋ค์ํ ๋์ ๋ฐ Flow ์ ๋๋ฒ๊น ์ ํตํ ์ ํํ๊ณ ์์ธํ ์ค๋ช ์ ํตํด ๋จ์ํ API ์ฌ์ฉ๋ฒ๊ณผ ๊ธฐ๋ฅ ์์ ๋ฅผ ๋์ด ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ์ ๊ตฌ์กฐ์ ํ๋ฆ์ ์์ ๋ถ์ํ๊ณ ์ดํดํจ์ผ๋ก์ ์ด๋ค ์ํฉ์์๋ ์ ์ฐํ ๋์ฒ๊ฐ ๊ฐ๋ฅํ ์ง์์ ๊ฐ์ถ๋๋ก ํ๋๋ฐ ์ค์ ์ ๋๊ณ ์์ผ๋ฉฐ ๋ณธ ๊ฐ์ฌ๊ฐ ๊ฐ์คํ ๊ฐ์๋ค์ ํจํด ๋ฐ ๊ณตํต์ ์ธ ํน์ง์ด๋ผ ํ ์ ์์ต๋๋ค.์๋ ํ์ธ์
์คํ๋ง ๋ฐฐ์น (Spring Boot ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ Spring Batch)
๊ฐ์ข๊ฐ ์คํ๋์์ต๋๋ค
์์๋ณด๋ค ๋ค์ ๋ฆ์ด์ก์ง๋ง ์คํ ์์์ด ๋ ๊ธฐ์ฉ๋๋ค^^
์คํ ๊ธฐ๋ ์ผ๋ก 30% ํ ์ธ ์ด๋ฒคํธ๊ฐ ์งํ์ค์ด์ค๋ ํ ์ธ๋ ๊ฐ๊ฒฉ์ผ๋ก ์๊ฐํ์๊ธธ ๋ฐ๋๋๋ค.
์ด๋ฒ ์คํ๋ง ๋ฐฐ์น ๊ฐ์ข๋ ์คํ๋ง ๋ฐฐ์น์ Fundamental ์ ์ญ์ ์ ๋๊ณ ๊ฐ์๋ฅผ ์ค๋นํ์์ต๋๋ค.
์ฆ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ์ก๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ง์ ์๊ฐ์ ํ ์ ํ์์ต๋๋ค.
๊ทธ๋์ ์ด ๊ฐ์ข๋ฅผ ์๊ฐํ์ ํ์๋ ์คํ๋ง ๋ฐฐ์น์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ์ ๋ฟ ์๋๋ผ ์คํ๋ง ๋ฐฐ์น์ ๊ธฐ์ ์ ํ์ฉํ์ฌ
๋์ฑ ํ์ฅ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ ์ญ๋์ ๊ธฐ๋ฅด๋๋ฐ ์ค์ ์ ๋์๋ค๊ณ ํ ์ ์์ต๋๋ค.
์๋ฌด์ชผ๋ก ๋ฐฐ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๊ด์ฌ์ด ์๊ฑฐ๋ ์ค๋ฌด์ ์ผ๋ก ํ์ ์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋ชจ๋ ์๊ฐ์ ์ฌ๋ฌ๋ถ๋ค์๊ฒ ์ด ๊ฐ์ข๊ฐ ๋์์ด ๋ ์ ์๊ธฐ๋ฅผ ์ง์ฌ์ ๋ฐ๋ ๋ด ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
[์ ์์] ์คํ๋ง ๋ฐฐ์น(Spring Boot ๊ธฐ๋ฐ์ผ๋ก๊ฐ๋ฐํ๋ Spring Batch)
์๋ ํ์ธ์. ์ฌ๋ฌ๋ถ
์คํ๋ง ๋ฐฐ์น ๊ฐ์ข๊ฐ ๊ณง ์คํํฉ๋๋ค.
- ์ ๋ชฉ: ์คํ๋ง ๋ฐฐ์น(Spring Boot ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ Spring Batch)
- ๊ฐ์ ์: 108๊ฐ
- ๊ฐ์ ์๋ฃ : ์ฝ 400 ๊ฐ ppt ํ๋ฉด
- ๊ฐ์ ์๊ฐ : ์ฝ 45 ์๊ฐ
๊ฐ์ ๋ชฉํ
์ด๋ฒ ์คํ๋ง ๋ฐฐ์น ๊ฐ์ข๋ ์ด๊ธ์์ ์ค.๊ณ ๊ธ์ ์ด๋ฅด๊ธฐ๊น์ง ์คํ๋ง ๋ฐฐ์น์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ API ์ฌ์ฉ๋ฒ๊ณผ ๋ด๋ถ ์ํคํ ์ฒ ๊ตฌ์กฐ๋ฅผ ์ฌ๋์๊ฒ ๋ค๋ฃน๋๋ค. ๊ทธ๋ฆฌ๊ณ ์คํ๋ง ๋ฐฐ์น ๊ฐ ๊ธฐ๋ฅ์ ํ๋ฆ๊ณผ ์๋ฆฌ๋ฅผ ํ์ตํ๊ฒ ๋๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ค์ํ ๋ฐฐ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ์ค๋ฌด์ ๊ฐ๊ฐ์ ์ตํ๊ฒ ๋ฉ๋๋ค.
๊ฐ์ ์ฃผ์
- ์คํ๋ง ๋ฐฐ์น ํต์ฌ ๋๋ฉ์ธ ์ดํด
- ๊ฐ ๋๋ฉ์ธ๋ค์ ์ฉ์ด์ ๊ฐ๋ ๊ณผ ๋๋ฉ์ธ๋ค๊ฐ์ ๊ด๊ณ๋ฅผ ์ดํดํจ์ผ๋ก์จ ๊ฐ๋จํ Job๋ถํฐ ๋ณต์กํ Job ๊น์ง ์ํ๋ Job ์ ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ตํ๊ฒ ๋ฉ๋๋ค.
- ์คํ๋ง ๋ฐฐ์น Job, Step, Flow ์ดํด ๋ฐ API ํ์ฉ
- Job ๊ณผ Step ์ ์ฌ๋ฌ ์ ํ๋ค์ ๋ํด ์ดํด๋ณด๊ณ Job, Step, Flow ๋ฅผ ์กฐํฉํ์ฌ ๋ฐฐ์น์ก์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ํ์ตํจ์ผ๋ก์ ์คํ๋ง ๋ฐฐ์น์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ Job ์ ๊ตฌ์ฑ ๋ฐ ํ์ฉ์ ์์ ์์ฌ๋ก ๊ตฌํํ ์ ์๋ ๋ฅ๋ ฅ์ ๊ธฐ๋ฅด๊ฒ ๋ฉ๋๋ค.
- Job ๊ณผ Step ์ ์ฌ๋ฌ ์ ํ๋ค์ ๋ํด ์ดํด๋ณด๊ณ Job, Step, Flow ๋ฅผ ์กฐํฉํ์ฌ ๋ฐฐ์น์ก์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ํ์ตํจ์ผ๋ก์ ์คํ๋ง ๋ฐฐ์น์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ Job ์ ๊ตฌ์ฑ ๋ฐ ํ์ฉ์ ์์ ์์ฌ๋ก ๊ตฌํํ ์ ์๋ ๋ฅ๋ ฅ์ ๊ธฐ๋ฅด๊ฒ ๋ฉ๋๋ค.
- ์คํ๋ง ๋ฐฐ์น Chunk ๊ธฐ๋ฐ ํ๋ก์ธ์ค ์ดํด ๋ฐ ํ์ฉ
- ์ฒญํฌ ๊ธฐ๋ฐ ํ๋ก์ธ์ฑ์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ๊ณผ ์๋ฆฌ๋ฅผ ํ์ตํ๊ณ ๋ด๋ถ ์ํคํ ์ฒ๊น์ง ํ์ ํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ์์ ๋ฅผ ํตํด ์ฒญํฌ ๊ธฐ๋ฐ ํ๋ก์ธ์ฑ์ ํตํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํ์ฉ๋ฒ์ ์ ๋ณตํ๊ฒ ๋ฉ๋๋ค
- ์คํ๋ง ๋ฐฐ์น ์์ธ ๋ฐ ์ค๋ฅ ์ ์ด
- ๋ด๊ฒฐํจ์ฑ์ ๊ฐ์ง ๋ฐฐ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ์ ์๋์ง ํ์ตํ๊ฒ ๋ฉ๋๋ค.
- ์ด์ ๊ด๋ จ๋ ๊ธฐ์ ์ธ Skip ๊ณผ Retry ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๋ด์ฉ๊ณผ ์ค์ต์ ์งํํฉ๋๋ค
- ์คํ๋ง ๋ฐฐ์น ๋ฉํฐ ์ค๋ ๋ ํ๋ก์ธ์ฑ ์ดํด ๋ฐ ํ์ฉ
- ์๋ฐ์ ์ค๋ ๋ ๋ชจ๋ธ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋
๊ณผ ์คํ๋ง ๋ฐฐ์น์์ ์ ๊ณตํ๋ ๋ฉํฐ ์ค๋ ๋ ๊ด๋ จ๋ ๊ธฐ์ ๋ค์ ๋จผ์ ์ดํดํ๊ณ ์ฌ๋ฌ ๋ฉํฐ ์ค๋ ๋ ์ ํ์ ๋ฐฐ์น์ฒ๋ฆฌ ๊ธฐ์ ๋ค์ ์ตํ๊ฒ ๋ฉ๋๋ค
- ์๋ฐ์ ์ค๋ ๋ ๋ชจ๋ธ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋
๊ณผ ์คํ๋ง ๋ฐฐ์น์์ ์ ๊ณตํ๋ ๋ฉํฐ ์ค๋ ๋ ๊ด๋ จ๋ ๊ธฐ์ ๋ค์ ๋จผ์ ์ดํดํ๊ณ ์ฌ๋ฌ ๋ฉํฐ ์ค๋ ๋ ์ ํ์ ๋ฐฐ์น์ฒ๋ฆฌ ๊ธฐ์ ๋ค์ ์ตํ๊ฒ ๋ฉ๋๋ค
- ์คํ๋ง ๋ฐฐ์น ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ค๋ฃจ๊ธฐ
- ๋ฆฌ์ค๋ ๊ฐ๋ ๊ณผ ๋ฆฌ์ค๋ ์์ฑ, ๋ฑ๋ก, ํ์ฉ๋ฑ์ ๋ด์ฉ์ ํ์ตํฉ๋๋ค.
- ์คํ๋ง ๋ฐฐ์น TDD ๋ฐ ์ด์ API ํ์ฉ
- ์คํ๋ง ๋ฐฐ์น์์ TDD ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ ํ์ฉ์ ๋ํด์ ํ์ตํ๊ณ ๋ฐฐ์น์ ์ค์๊ฐ์ ์์, ์ค๋จ, ์ฌ์์์ ์ํ ํด๋์ค๋ค์ ๋ํด ํ์ตํฉ๋๋ค.
- ์คํ๋ง ๋ฐฐ์น ์ค์ ํ๋ก์ ํธ
- ๊ฐ์ข์์ ํ์ตํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ค์ ์์ ์์ฉํ ์ ์๋ ํ๋ก์ ํธ ์์ ๋ฅผ ๋ง๋ค์ด ๋ด
๋๋ค.
์ด๋ก์จ ๋ค์ํ ๋ฐฐ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋๋ฐ ๊ฐ ๊ธฐ๋ฅ๊ณผ ๊ธฐ์ ์ ์ธ ๋ด์ฉ์ ์ค๋ฌด์ ์ธ ๊ด์ ์์ ๋ฐ๋ผ๋ณด๋ ๋ฅ๋ ฅ์ ํค์ฐ๊ฒ ๋ฉ๋๋ค.
- ๊ฐ์ข์์ ํ์ตํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ค์ ์์ ์์ฉํ ์ ์๋ ํ๋ก์ ํธ ์์ ๋ฅผ ๋ง๋ค์ด ๋ด
๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์
์๋ก์ด ๊ฐ์ข๊ฐ ๊ณง ์คํ ์์ ์ ์์ต๋๋ค.
๊ฐ์ ์ฃผ์ ๋ ์คํ๋ง ๋ฐฐ์น (์คํ๋ง ๋ถํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ ์คํ๋ง ๋ฐฐ์น) ์ ๋๋ค.
์์ ๋ ๊ณํ๋ณด๋ค ๋ค์ ๋ฆ๊ฒ ์คํ๋์ง๋ง ๊ทธ๋งํผ ์ข์ ๋ด์ฉ์ผ๋ก ์ฌ๋ฌ๋ถ๋ค๊ป ์ ๊ณตํ๊ณ ์ ๋ ธ๋ ฅํ์ต๋๋ค.
์์ ์ผ์ ์ 9์ ์ค์๊ฒฝ์ผ๋ก ๋ณด๊ณ ์์ต๋๋ค.
์๋ฌด์ชผ๋ก ์ด ๊ฐ์ข๋ฅผ ์๊ฐํ์๋ ๋ชจ๋ ๋ถ๋ค์๊ฒ ์ ์ตํ๊ณ ๋์์ด ๋์ด์ง๊ธธ ์ง์ฌ์ผ๋ก ๋ฐ๋ผ๊ฒ ์ต๋๋ค.
์กฐ๊ธ๋ง ๋ ๊ธฐ๋ค๋ ค ์ฃผ์ญ์์ค
๊ฐ์ฌํฉ๋๋ค.^^






