foo
@foo
Students
5,773
Reviews
270
Course Rating
4.9
์๋ ํ์ธ์.
๋ฉํ ๋ง์ ํ๋ฉด์ ์ฃผ๋์ด ๊ฐ๋ฐ์๋ค์ด ์ด๋ ค์ ํ๋ ๊ฐ๋ ๋ค์ ๋ํด ์ด๋ป๊ฒ ํ๋ฉด ์ฝ๊ฒ ์ ๋ฌํ ์ ์์์ง์ ๋ํด์ ๋ง์ ๊ณ ๋ฏผ์ ํ๊ณ ์๋ ํธ(Foo)๋ผ๊ณ ํฉ๋๋ค.
์ ๋ถํ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ด๋ ฅ
2019. 08 ~ ํ์ฌ : ์นด์นด์ค ์๋ฐ ๋ฐฑ์๋ ๊ฐ๋ฐ์
2021. 08 ~ ํ์ฌ : programmers ๋ฐฑ์๋ ๋ฐ๋ธ์ฝ์ค ๋ฉํ
2021. 12 ~ ํ์ฌ : F-Lab ์๋ฐ ๋ฐฑ์๋ ๋ฉํ
์ฑ
์ด๊ฒ์ด ์ทจ์ ์ ์ํ ๋ฐฑ์๋ ๊ฐ๋ฐ์ด๋ค with ์๋ฐ(๋งํฌ)
๊ธฐํ ์ด๋ ฅ ๋ฐ ํ ํ๋ซํผ ๊ฐ์๋ค์ ์๋ GitHub ๋งํฌ์์ ํ์ธํ ์ ์์ต๋๋ค.
GitHub - https://github.com/lleellee0
Courses
Reviews
- Resilience4j - CircuitBreaker for creating fault-free services
- Testing backend application performance
- Resilience4j - CircuitBreaker for creating fault-free services
- Frontend lectures for backend developers, by backend developers - Basics
Posts
Q&A
์นดํ์นด ์ง๋ฌธ
ssunn0812๋ ์๋ ํ์ธ์~์ฐ์ ๋ต๋ณ์ด ๋ฆ์ด์ ์ฃ์กํฉ๋๋ค. (_ _) ์ง๋ฌธ ์ฃผ์ ๋ด์ฉ์ ๋ํด ๋ต๋ณ๋๋ ค๋ณด๊ฒ ์ต๋๋ค. ์ค๋ฌด์์๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ฐ์ง ์ ๋ต์ ์กฐํฉํด์ ์ฌ์ฉํฉ๋๋ค. 1. ์ปจ์๋จธ์ '์ฒ๋ฆฌ ์๋' ์์ฒด๋ฅผ ์กฐ์ ํ๊ธฐ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๊ณ ์ง์ ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. DB๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ์๋งํผ๋ง ์ปจ์๋จธ๊ฐ ์์ ์ ์ํํ๋๋ก ์กฐ์ ํ๋(Throttling) ๊ฒ์ ๋๋ค.๋ฐฐ์น ํฌ๊ธฐ ์กฐ์ (max.poll.records): ์นดํ์นด ์ปจ์๋จธ๋ ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ๋ฉ์์ง(๋ฐฐ์น)๋ฅผ ๊ฐ์ ธ์์ ์ฒ๋ฆฌํฉ๋๋ค. ์ด max.poll.records ์ต์ ๊ฐ์ ์๋์ ์ผ๋ก ๋ฎ๊ฒ ์ค์ (์: 500๊ฐ -> 50๊ฐ)ํ๋ฉด, ํ ๋ฒ์ ๋ฃจํ์์ DB๋ก ๋ณด๋ด๋ INSERT ์ฟผ๋ฆฌ์ ์๊ฐ ์ค์ด๋ญ๋๋ค. ์ด๋ DB์ ๋ถํ๋ฅผ ์ฆ๊ฐ์ ์ผ๋ก ๋ฎ์ถฐ์ฃผ๋ ๊ฐ์ฅ ๊ฐ๋จํ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.์ปจ์๋จธ ์ฌ์ด๋ Rate Limiting: ์ปจ์๋จธ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋ ๋ด์ Google Guava์ RateLimiter ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ "์ด๋น 1000๊ฐ์ ํธ๋์ญ์ ๋ง ์ฒ๋ฆฌ"ํ๋๋ก ๋ช ์์ ์ผ๋ก ์ ํ์ ๊ฑธ ์ ์์ต๋๋ค. 2. 'Backpressure'๋ฅผ ๊ตฌํํ์ฌ ๋ฅ๋์ ์ผ๋ก ๋ฐฉ์ดํ๊ธฐ๋จ์ํ ์๋๋ฅผ ์ค์ด๋ ๊ฒ์ ๋์ด, DB์ '์ํ'๋ฅผ ํ์ธํ๊ณ ์ปจ์๋จธ์ ๋์์ ์ผ์์ ์ผ๋ก ๋ฉ์ถ๋, ๋ ์ง๋ฅ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.Circuit Breaker ์ ์ฉ : ๊ฐ์์ ํต์ฌ ์ฃผ์ ์ธ '๊ฒฌ๊ณ ํ ์์คํ '๊ณผ ์ง๊ฒฐ๋ฉ๋๋ค. ์ปจ์๋จธ๊ฐ DB์ INSERT๋ฅผ ์๋ํ ๋, DB์์ ์ปค๋ฅ์ ํ์์์์ด๋ ์๋ต ์ง์ฐ ๊ฐ์ ์ค๋ฅ๊ฐ ์ผ์ ๋น์จ ์ด์ ๋ฐ์ํ๋ฉด Circuit Breaker๋ฅผ 'Open' ์ํ๋ก ์ ํํฉ๋๋ค.pause()์ resume()์ ํ์ฉ: Circuit Breaker๊ฐ Open์ด ๋์์ ๋๊ฐ ์ค์ํฉ๋๋ค. ์ด๋ ์ปจ์๋จธ๋ ๋จ์ํ ์๋ฌ๋ฅผ ๋ก๊ทธ์ ๋จ๊ธฐ๊ณ ๋ค์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ค ํ๋ฉด ์ ๋ฉ๋๋ค. (๊ทธ๋ฌ๋ฉด DB๋ ๊ณ์ ๊ณต๊ฒฉ๋นํ๊ฒ ์ฃ .) ๋์ , ์นดํ์นด ์ปจ์๋จธ์ pause() ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.consumer.pause()๊ฐ ํธ์ถ๋๋ฉด, ์ปจ์๋จธ๋ ๋ธ๋ก์ปค์๊ฒ "๋ ์ง๊ธ ๋ฐ์๋(ํน์ ๋ด ๋ท๋จ์ด ์ํ๋) ๋ฉ์์ง๋ฅผ ๋ ์ด์ ์ฃผ์ง ๋ง"๋ผ๊ณ ์ ํธ๋ฅผ ๋ณด๋ ๋๋ค.์ปจ์๋จธ๋ ๋ธ๋ก์ปค๋ก๋ถํฐ ์๋ก์ด ๋ฉ์์ง๋ฅผ ๋ฐ์์ค์ง ์๊ณ (poll X), Circuit Breaker๊ฐ ๋ซํ ๋๊น์ง(์: 1๋ถ ๋ค) ๋๊ธฐํฉ๋๋ค.์ดํ DB ์ํ๊ฐ ์ ์์ผ๋ก ๋์์ Circuit Breaker๊ฐ 'Close'๋๋ฉด, ๊ทธ๋ consumer.resume()์ ํธ์ถํ์ฌ ๋ค์ ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ์์ํฉ๋๋ค.์ด pause()/resume()์ Circuit Breaker์ ์กฐํฉ์ด DB ๊ณผ๋ถํ๋ฅผ ๋ง๋ ๊ฐ์ฅ ์ธ๋ จ๋๊ณ ํจ๊ณผ์ ์ธ ์ค๋ฌด ๊ธฐ๋ฒ์ ๋๋ค. 3. ์คํจํ ๋ฉ์์ง ์ฒ๋ฆฌ ๋ฐ ์ฌ์๋ ์ ๋ตํธ๋ํฝ ๊ธ์ฆ์ผ๋ก ์ธํด DB๊ฐ ์ฒ๋ฆฌํ์ง ๋ชปํ ๋ฉ์์ง๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?์ฌ์๋ ์ต๋ ํ์ ์ ํ: DB๊ฐ ์ํ์ ์คํจํ ์์ฒญ์ ์ปจ์๋จธ๊ฐ ๊ณง๋ฐ๋ก ์ฌ์๋(retry)ํ๋ฉด, ์ด๋ ๋ถ๋ ์ง์ ๋ถ์ฑ์งํ๋ ๊ฒฉ์ ๋๋ค. DB ๋ถํ๋ฅผ ๋์ฑ ๊ฐ์ค์์ผ '์ฌ์๋ ํญํ(Retry Storm)'์ ์ผ์ผํต๋๋ค.Dead Letter Queue (DLQ): ์ผ๋ฐ์ ์ผ๋ก 3ํ ์ ๋์ ์ฌ์๋(exponential backoff ์ ์ฉ) ํ์๋ ์คํจํ๋ ๋ฉ์์ง๋, ์ฒ๋ฆฌ๋ฅผ ํฌ๊ธฐํ๊ณ ๋ณ๋์ 'Dead Letter Queue (DLQ)' ํ ํฝ์ผ๋ก ๋ณด๋ ๋๋ค.์ด๋ ๊ฒ ํ๋ฉด ์ปจ์๋จธ๋ ์ผ๋จ ํด๋น ๋ฉ์์ง์ ์คํ์ ์ ์ปค๋ฐ(commit)ํ๊ณ ๋ค์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์ด, ์ ์ฒด ํ์ดํ๋ผ์ธ์ด ๋งํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.DLQ๋ก ๊ฐ ๋ฉ์์ง๋ค์ ๋์ค์ ๊ฐ๋ฐ์๊ฐ ์์ธ์ ๋ถ์ํ๊ฑฐ๋, DB ๋ถํ๊ฐ ์ ์ ์๋ฒฝ ์๊ฐ์ ๋ณ๋์ ๋ฐฐ์น ์์ ์ผ๋ก ์ฌ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์์ฝํ์๋ฉด,์ค๋ฌด์์๋ 1) max.poll.records ๊ฐ์ ์ต์ ์ผ๋ก ๊ธฐ๋ณธ ์ฒ๋ฆฌ๋์ ํ๋ํ๊ณ , 2) DB ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ Circuit Breaker๋ฅผ ๊ตฌํํ๋ฉฐ, 3) DB ์ฅ์ ์ pause()๋ฅผ ํธ์ถํ์ฌ ์ปจ์๋จธ๋ฅผ ๋ฅ๋์ ์ผ๋ก ๋ฉ์ถ๋(Backpressure) ๋ฐฉ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ 4) ๋ฐ๋ณต์ ์ผ๋ก ์คํจํ๋ ๋ฉ์์ง๋ DLQ๋ก ๊ฒฉ๋ฆฌํ์ฌ ์์คํ ์ ์ฒด์ ์์ ์ฑ์ ํ๋ณดํฉ๋๋ค.์ด๋ฌํ ์ฅ์น๋ค์ ํตํด ํธ๋ํฝ์ด ๊ธ์ฆํ๋๋ผ๋ ์นดํ์นด ํ ํฝ์ ๋ฉ์์ง๊ฐ ์ข ์์ผ์ง์ธ์ (Lag ๋ฐ์), ์ต์ข ๊ด๋ฌธ์ธ DB๊ฐ ๋ค์ด๋๋ ์ต์ ์ ์ฅ์ ์ํฉ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๋ค๋ง ์์คํ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ ๋ด์ฉ์ด ์ ์ฉ ๋ถ๊ฐ๋ฅํ ์ํฉ๋ ์์๊ฒ๋๋ค. ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋ฐฉ์์ ๋์ ํด์ผํ๊ณ , ํ์ํ๋ค๋ฉด DB๊ฐ ๋ฐ๋ ๋ถํ๋ฅผ ๋ถ์ฐํ๋ ๋ฐฉ๋ฒ๋ ์ ์ฉํด๋ณด๋ฉด ์ข์ต๋๋ค. DB ๋ถํ ๋ถ์ฐ ์ ๋ต์ ์ํ ํต์ฌ ํค์๋๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.Read / Write ๋ถ๋ฆฌ (CQRS)๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต์ (Replication): Read ๋ถํ ๋ถ์ฐ์ ์ํ 'Read Replica(์ฝ๊ธฐ ์ ์ฉ ๋ณต์ ๋ณธ)' ํ์ฉ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ (Sharding / Partitioning): Write ๋ถํ์ ๊ทผ๋ณธ์ ์ธ ๋ถ์ฐ์บ์ (Cache) ํ์ฉ: Redis, Memcached ๋ฑ์ ์ด์ฉํด DB ์กฐํ ์์ฒด๋ฅผ ์ค์ด๊ธฐ ํน์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด ๋์๊น์?์ถ๊ฐ์ ์ผ๋ก ๊ถ๊ธํ ๋ด์ฉ ์์ผ๋ฉด ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์.๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 41
Q&A
์๋ ํ์ธ์ ํน์ multipart request์์ฒญ์ผ๋๋ ํ๋ผ๋ฏธํฐ๊ฐ ์์ค ๋์์ง ์๋๊ฐ์??
๊ฐํ์๋ ์๋ ํ์ธ์~ ์.. ๊ฐ์์์๋ multipart request ๊ด๋ จํด์๋ ๋ค๋ฃจ์ง ์์๋ ๊ฒ ๊ฐ์๋ฐ ํน์ ๋ฌธ์ ๋๋๊ฒ ์์ผ์ ๊ฐ์?multipart request ์์ฒด๊ฐ ์ผ๋ฐ ์์ฒญ๊ณผ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋น์ฐํ ๊ฐ์์์ ์งํํ ์ฝ๋ ๋ง์ผ๋ก๋ ์ ์์ ์ผ๋ก ๋์ํ์ง ์์ ์ ์์ต๋๋ค.ํน์ ๋ฌธ์ ๊ฒช๊ณ ์์ผ์ ์ํฉ ์ข ๋ ์์ธํ ์ค๋ช ํด์ฃผ์๋ฉด ๋์ ๋๋ฆด ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๐ ๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 33
Q&A
Artillery์์ VUSER๋ ์ด๋ป๊ฒ ์ธก์ ๋๋ ๊ฑธ๊น์?
๊นํ์ค๋ ์๋ ํ์ธ์!์ฐ์ ๋ต๋ณ์ด ๋ฆ์ด์ ์ฃ์กํฉ๋๋ค. (_ _) ์ง๋ฌธ ์ฃผ์ ๋ด์ฉ์ ๋ํด ๋ต๋ณ๋๋ฆฌ๊ฒ ์ต๋๋ค! Artillery์์ VUser(๊ฐ์ ์ ์ )๋ 'ํ๋์ ์ ํด์ง ์๋๋ฆฌ์ค(์ฌ์ฉ์ ์ฌ์ )๋ฅผ ์ํํ๋ ๋ ๋ฆฝ์ ์ธ ํ์์'๋ก ์ ์๋ฉ๋๋ค.์๋ฅผ ๋ค์ด, "1. ๋ก๊ทธ์ธํ๋ค โ 2. ์ํ ๋ชฉ๋ก์ ์กฐํํ๋ค โ 3. ํน์ ์ํ์ ์ฅ๋ฐ๊ตฌ๋์ ๋ด๋๋ค"๋ผ๋ 3๊ฐ์ API ์์ฒญ์ผ๋ก ๊ตฌ์ฑ๋ ํ๋์ '์๋๋ฆฌ์ค'๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด์ฃ .Artillery์ VUser 1๋ช ์ ์ด 3๋จ๊ณ์ ํ๋ฆ ์ ์ฒด๋ฅผ ์ฒ์๋ถํฐ ๋๊น์ง ์ํํ๋ '๊ฐ์์ ์ฌ์ฉ์ 1๋ช '์ ์๋ฏธํฉ๋๋ค. ๋จ์ํ ์์ฒญ 1๊ฐ๋ฅผ ๋ณด๋ด๋ ์กด์ฌ๊ฐ ์๋๋๋ค. ์ฌ๊ธฐ์ nGrinder์์ ๊ฒฐ์ ์ ์ธ ์ฐจ์ด๊ฐ ๋์ต๋๋ค.๊นํ์ค๋๊ป์ ์ธ๊ธํ์ nGrinder์ VUser = (ํ๋ก์ธ์ค ์) * (์ค๋ ๋ ์) ๊ณต์์ '๋์์ ์คํ๋ ์ค๋ ๋์ ์ดํฉ'์ ์๋ฏธํฉ๋๋ค. ์ฆ, "์ด 500๊ฐ์ ์ค๋ ๋(VUser)๋ฅผ ๋์์ ๊ณ์ ์์ฒญ์ ๋ณด๋ด๋ผ"๋ ๋ฐฉ์(์ฐพ์๋ณด๋ ์ด๊ฑธ Closed Model์ด๋ผ๊ณ ๋ถ๋ฅด๋๋ผ๊ตฌ์)์ ๊ฐ๊น์ต๋๋ค. VUser๊ฐ ์ค๋ ๋๋ผ๋ ๋ฆฌ์์ค์ ๊ฐํ๊ฒ ์ฐ๊ฒฐ๋์ด ์์ฃ .ํ์ง๋ง Artillery๋ (k6๋ Gatling์ฒ๋ผ) '์ด๋น ๋ช ๋ช ์ ์๋ก์ด VUser๊ฐ ๋์ฐฉ(Arrival)ํ ๊ฒ์ธ๊ฐ'๋ฅผ ์ค์ ํ๋ ๋ฐฉ์(๋ฐ๋๋ก ์ด ๋ฐฉ์์ Open Model์ด๋ผ๊ณ ๋ถ๋ฅธ๋ต๋๋ค)์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.Artillery ์ค์ ํ์ผ์์ ํต์ฌ์ concurrency (๋์ ์ ์์ ์) ๋ณด๋ค๋ arrivalRate (์ด๋น ๋์ฐฉ๋ฅ )์ ๋๋ค.์ฆ, arrivalRate: 10 ์ด๋ผ๊ณ ์ค์ ํ๋ฉด, ๋งค์ด 10๋ช ์ ์๋ก์ด VUser๊ฐ ์์คํ ์ ๋์ฐฉํด์ ๊ฐ์์ ์๋๋ฆฌ์ค(๋ก๊ทธ์ธ -> ์กฐํ -> ์ฅ๋ฐ๊ตฌ๋)๋ฅผ ์ํํ๊ธฐ ์์ํ๋ค๋ ์๋ฏธ์ ๋๋ค. ํน์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด ๋์๊น์?!์ถ๊ฐ์ ์ผ๋ก ์ง๋ฌธ ์์ผ์๋ฉด ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์~๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 39
Q&A
์๋ ํ์ธ์. ํ์์์ ์๊ฐ์ ๊ดํ์ฌ ์ง๋ฌธ์์ต๋๋ค.
์ ์ธํธ๋ ์๋ ํ์ธ์!์ฐ์ ๋ต๋ณ์ด ๋ฆ์ด์ ์ฃ์กํฉ๋๋ค. (_ _) ์ง๋ฌธ์ฃผ์ ๋ด์ฉ์ ๋ํด ๋ต๋ณ๋๋ฆฌ์๋ฉด, ํ์์์์ ์ค์ ํ๊ณ ํ ์คํธํ๋ ๊ฒ์ '์ ๋ต'์ด ์๋ค๊ธฐ๋ณด๋ค๋, ์์คํ ์ ํน์ฑ๊ณผ ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ, ๊ทธ๋ฆฌ๊ณ ์ฅ์ ์ ํ๋ฅผ ๋ง๊ธฐ ์ํ ์ ๋ต์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ์ค๋ฌด์์ ์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ์ ๊ทผํ๋์ง '๊ฒฐ์ 'ํ๋ ๊ณผ์ ๊ณผ 'ํ ์คํธ'ํ๋ ๊ณผ์ ์ผ๋ก ๋๋์ด ์ค๋ช ํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. 1. ํ์์์ ์๊ฐ '๊ฒฐ์ 'ํ๊ธฐ๋จผ์ ํ์์์ ์๊ฐ์ '๊ฒฐ์ 'ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ฐ์ด ์๋๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋จํ๋ ๊ฒ์ ๋๋ค.์ค๋ฌด์์๋ Datadog์ด๋ New Relic ๊ฐ์ APM(๋ชจ๋ํฐ๋ง ํด)์ ํตํด ์ค์ ์๋น์ค์ ์๋ต ์๊ฐ์ ํ์ธํฉ๋๋ค. ์ด๋ 'ํ๊ท ์๋ต ์๊ฐ'์ด ์๋๋ผ 'p95 ๋๋ p99 ๋ฐฑ๋ถ์์'๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค.์๋ฅผ ๋ค์ด, ์ด๋ค API์ p99 ์๋ต ์๊ฐ์ด 800ms๋ผ๋ฉด, ์ด๋ "์ ์ฒด ์์ฒญ์ 99%๊ฐ 800ms ์์ ์ฒ๋ฆฌ๋์ง๋ง, 1%๋ ๊ทธ๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฐ๋ค"๋ ๋ป์ด์ฃ . ์ด ๊ฒฝ์ฐ ํ์์์์ 1์ด(1000ms) ์ ๋๋ก ์ค์ ํ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณผ ์ ์์ต๋๋ค. 99%์ ์ ์ ์์ฒญ์ ํ์ฉํ๋, ๋น์ ์์ ์ผ๋ก ์ง์ฐ๋๋ 1%์ ์์ฒญ์ '์คํจ'๋ก ๊ฐ์ฃผํ๊ณ ๋น ๋ฅด๊ฒ ์ฐ๊ฒฐ์ ๋์ด๋ด๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ฅ์ ๊ฐ ๋ค๋ฅธ ์์คํ ์ผ๋ก ์ ํ๋๋ ๊ฒ์ ๋ง๋ ์ฒซ๊ฑธ์์ ๋๋ค.๋ฌผ๋ก ๋ฐ์ดํฐ๋ง ๋ณด๋ ๊ฒ์ ์๋๋๋ค. ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ(UX)๋ ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํ๋ฉด์์ ์ง์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ '์ํ ๋ชฉ๋ก ์กฐํ' ๊ฐ์ ๊ธฐ๋ฅ์ด๋ผ๋ฉด 1~3์ด ์ด๋ด๋ก ๋งค์ฐ ์งง๊ฒ ์ก์์ผ ํ์ง๋ง, ์ฌ์ฉ์๊ฐ ์ฆ๊ฐ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ง ์๋ '์ผ๊ฐ ๋ฐฐ์น ํต๊ณ' ์์ ์ด๋ผ๋ฉด 30์ด๋ 1๋ถ ์ด์์ผ๋ก ๊ธธ๊ฒ ์ค์ ํ ์๋ ์์ต๋๋ค.๋ํ, ์ฐ๋ฆฌ๊ฐ ํธ์ถํ๋ ๋์์ด ๊ฒฐ์ API์ฒ๋ผ ์ธ๋ถ ์๋ํํฐ ์๋น์ค๋ผ๋ฉด, ํด๋น ์ ์ฒด๊ฐ ์ ๊ณตํ๋ SLA(์๋น์ค ์์ค ํ์ฝ) ๋ฌธ์๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๋ค์ด "3์ด ์ด๋ด ์๋ต ๋ณด์ฅ"์ด๋ผ๊ณ ๋ช ์ํ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ทธ์ ๋ง์ถฐ 3~5์ด ์ ๋๋ก ์ค์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๊ฒ ์ฃ .๋ง์ง๋ง์ผ๋ก ๊ฐ์์์ ๋ฐฐ์ด '์ฅ์ ์ ํ ๋ฐฉ์ง' ๊ฐ๋ ์ด ์ฌ๊ธฐ์ ์ค์ํ๊ฒ ์ฐ์ ๋๋ค. ์์คํ ์ ์ฒด์ 'ํ์์์ ์์ฐ'์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ์์ฒญ์ด A(์ฑ์๋ฒ)๋ฅผ ๊ฑฐ์ณ B(์ธ์ฆ์๋ฒ), ๊ทธ๋ฆฌ๊ณ C(DB)๋ก ์ ๋ฌ๋๋ค๊ณ ํด๋ณด์ฃ . ๋ง์ฝ A์ ์ต์ข ํ์์์์ด 3์ด๋ผ๋ฉด, A๊ฐ ํธ์ถํ๋ B๋ 2์ด, B๊ฐ ํธ์ถํ๋ C๋ 1์ด์ฒ๋ผ, ์์ฒญ์ ๋๋จ์ผ๋ก ๊ฐ์๋ก ํ์์์์ ๋ ์งง๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํด์ผ C์์ 2.5์ด๊ฐ ๊ฑธ๋ ค๋ B๊ฐ 2์ด ์์ ์ ์ด๋ฏธ ํ์์์ ์ฒ๋ฆฌ๋ฅผ ํด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์, ์ฅ์ ๊ฐ A๊น์ง ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ์ ์ ์ฒด ์์คํ ์ ๋ง๋น์ํค๋ ๊ฒ์ ๋ง์ ์ ์์ต๋๋ค.2. ํ์์์ 'ํ ์คํธ'ํ๊ธฐ๋ค์์ผ๋ก, ์ด๋ ๊ฒ ๊ฒฐ์ ํ ํ์์์์ ์ด๋ป๊ฒ 'ํ ์คํธ'ํ๋์ง ๋ง์๋๋ฆด๊ฒ์. ์ค์ ํ ๊ฐ์ด ์ ๋์ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ํ์์์์ด ๋ฐ์ํ์ ๋ ์ฐ๋ฆฌ ์์คํ ์ด ์๋๋๋ก ๋ฐ์ํ๋์ง ๊ฒ์ฆํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.๊ฐ์ฅ ๊ธฐ๋ณธ์ ๋จ์ ํ ์คํธ๋ ํตํฉ ํ ์คํธ ๋จ๊ณ์์ Mock(๊ฐ์ง ๊ฐ์ฒด)์ ํ์ฉํ๋ ๊ฒ์ ๋๋ค. ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ค์ ์ธ๋ถ API๋ DB๋ฅผ ํธ์ถํ๋ ๋์ , 'Mock' ๊ฐ์ฒด๊ฐ ์ค์ ํ ํ์์์ ์๊ฐ(์: 1์ด)๋ณด๋ค ์ผ๋ถ๋ฌ ๋ ๋ฆ๊ฒ(์: 2์ด) ์๋ตํ๋๋ก ์กฐ์ํฉ๋๋ค.๊ทธ๋ฆฌ๊ณ ๋ ์ ๋ง๋ก 1์ด ๋ค์ TimeoutException ๊ฐ์ ์์ธ๊ฐ ๋ฐ์ํ๋์ง, (๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ ๋ง ์ค์ํ๋ฐ) ํ์์์ ๋ฐ์ ์ ์ฌ์ฉ์์๊ฒ ์๋ฌ๋ฅผ ๊ทธ๋๋ก ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์๋๋ผ "์ ์ ํ ๋ค์ ์๋ํด์ฃผ์ธ์" ๊ฐ์ ์ค๋น๋ 'ํด๋ฐฑ(Fallback) ๋ก์ง'์ด ์ ์คํ๋๋์ง ๋ฐ๋์ ๊ฒ์ฆํด์ผ ํฉ๋๋ค.์ฌ๊ธฐ์ ๋ ๋์๊ฐ ๋ถํ ํ ์คํธ๋ ์งํํฉ๋๋ค. nGrinder๋ k6 ๊ฐ์ ํด์ ์ฌ์ฉํด ๊ฐ๋ฐ(Staging, ๋ถํ๋ฅผ ํ ์คํธํ๊ธฐ ์ํ ํ๊ฒฝ์ผ๋ก Prod ํ๊ฒฝ๊ณผ ๋์ผํ๊ฒ ์ธํ ) ํ๊ฒฝ์ ๋๊ท๋ชจ ํธ๋ํฝ์ ๊ฐํด๋ด ๋๋ค. ํธ์ถ๋๋ ์๋น์ค๊ฐ ๊ณผ๋ถํ๋ก ๋๋ ค์ง๊ธฐ ์์ํ ๋, ์ฐ๋ฆฌ ์๋น์ค์ ์ค์ ๋ ํ์์์์ด ์ค์ ๋ก ๋์ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์์คํ ์ ์ฒด๊ฐ ๋ง๋น๋์ง ์๊ณ ๋ฒํ จ๋ด๋์ง(๊ฒฌ๊ณ ์ฑ) ํ์ธํฉ๋๋ค. ํน์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด ๋์๊น์?!์ถ๊ฐ์ ์ผ๋ก ๊ถ๊ธํ ๋ด์ฉ ์์ผ๋ฉด ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์~๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 56
Q&A
๋ถ์ฐ ์์คํ ์ธ์ฆ/์ธ๊ฐ ๊ด๋ จ ์ง๋ฌธ ..
์์๋ ์๋ ํ์ธ์~์ฐ์ ๋ต๋ณ์ด ๋ฆ์ด์ ธ์ ์ฃ์กํฉ๋๋ค. ์ ๊ฐ ๋ถ์ฐํ๊ฒฝ์์ ์ธ์ฆ/์ธ๊ฐ์ ๋ํด ์ ์๋๊ฑด ์๋์ง๋ง(์ ๋ ์ฃผ๋ก ๋ด๋ถ์์ ๋ถ์ฐ ์์คํ ๊ฐ ํต์ ์ ๋ง์ด ์ฒ๋ฆฌํด๋ดค์ง๋ง, ์ฌ์ฉ์์ ์ธ๋ถ ์์คํ ์ด ์ฎ์ฌ์๋ ์ํฉ์ API ๊ฒ์ดํธ์จ์ด ๊ด๋ จ ๊ฐ๋ฐํ์๋๋ถ์ด ์ ์์ค๋ฏํ๋ค์ ใ ..), ์ง๋ฌธ์ฃผ์ ๋ด์ฉ์ ๋ํด ์๊ณ ์๋ ๋ด์ฉ์ผ๋ก ๋ต๋ณ๋๋ฆฌ์๋ฉด, 1โฃAPI ์ธ์ฆ ์ ํ ๊ด๋ จ์ฐ๋ฆฌ ์๋ฒ๊ฐ ํ์ฌ1ยท2 ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ผ ๋,์๋ ์๋ฒ์์๋ โ์ด ์์ฒญ์ด ์ค์ ์ธ์ฆ๋ ์ฌ์ฉ์๋ก๋ถํฐ ์จ ๊ฒโ์์ ์ด๋ป๊ฒ ๊ฒ์ฆํ๋ ๊ฒ ์ผ๋ฐ์ ์ธ๊ฐ์? -> ์ด ๋ฌธ์ ์ ํต์ฌ์ "ํ์ฌ1ยท2์ API๊ฐ '์ฐ๋ฆฌ ์๋ฒ'๋ฅผ ์ ๋ขฐํ ์ ์๋๊ฐ?"์ "์ ๋ขฐํ๋ '์ฐ๋ฆฌ ์๋ฒ'๊ฐ 'ํน์ ์ฌ์ฉ์'๋ฅผ ๋์ ํด ์์ฒญํ ๊ฒ์์ ์ด๋ป๊ฒ ์ฆ๋ช ํ๋๊ฐ?"์ ๋๋ค.์ฌ๊ธฐ์๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค. ๋จผ์ 'Trusted Subsystem (์ ๋ขฐํ ์ ์๋ ํ์ ์์คํ ) ๋ชจ๋ธ'์ธ๋ฐ, ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ๋ง์ด ์ฐ์ด๋ ๋ฐฉ์์ ๋๋ค. ๋ด๋ถ์์ ํต์ ํ๋ ์์คํ ๋ค๋ ์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฐฉ์์ ํ์ฉํฉ๋๋ค. ์ธ๋ถ ํ์ฌ๋ ์ด๋ค ๊ด๊ณ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์ํํ๊ฒ ์ปค๋ฎค๋์ผ์ด์ ํ ์ ์๊ณ , ์ฐ๋ฆฌ์ชฝ๊ณผ ์ธ์ฆ/์ธ๊ฐ ๋ฐฉ์์ ํ์ํ ์ ์๋๊ฑฐ๋ผ๋ฉด ์ด ๋ฐฉ์์ด ์ ์ ํ ๊ฒ ๊ฐ์ต๋๋ค.์๋ฒ ๊ฐ ์ธ์ฆ: '์ฐ๋ฆฌ ์๋ฒ'๋ 'ํ์ฌ1ยท2'์ ๋ฏธ๋ฆฌ ์ฝ์๋ API Key, Client ID/Secret ๋ฑ์ ์ฌ์ฉํ์ฌ ์๋ฒ ์์ฒด๋ฅผ ์ธ์ฆํฉ๋๋ค.์ฌ์ฉ์ ์๋ณ์ ์ ๋ฌ: '์ฐ๋ฆฌ ์๋ฒ'๋ API ์์ฒญ์ ๋ณธ๋ฌธ(Body)์ด๋ ํค๋(Header)์ "์ด ์์ฒญ์ '์ฌ์ฉ์ A'๋ฅผ ์ํ ๊ฒ์ ๋๋ค"๋ผ๋ ์ฌ์ฉ์ ID๋ฅผ ํฌํจํ์ฌ ์ ์กํฉ๋๋ค.๊ฒ์ฆ: 'ํ์ฌ1ยท2'์ ์๋ฒ๋ ์ผ๋จ API Key ๋ฑ์ ํตํด '์ฐ๋ฆฌ ์๋ฒ'๊ฐ ์ ๋ขฐํ ์ ์๋ ์ถ์ฒ์์ ํ์ธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ '์ฐ๋ฆฌ ์๋ฒ'๊ฐ ์ด๋ฏธ ์ฌ์ฉ์ ์ธ์ฆ์ ์๋ฃํ์ ๊ฒ์ด๋ผ๊ณ ์ ๋ขฐํ๊ณ , ํจ๊ป ์ ๋ฌ๋ '์ฌ์ฉ์ ID'๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค. ๋ ๋ค๋ฅธ ๋ฐฉ์์ 'OAuth 2.0 (์์ ์ธ์ฆ ํ์ค)'์ ์ฌ์ฉํ๋ ๋ฐฉ์์ธ๋ฐ, ํ์ฌ1ยท2์์ OAuth 2.0์ ์ ๊ณตํ๋์ง๊ฐ ํ์ธํด๋ณด์ ์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. OAuth 2.0์ ๋ํ ๋ด์ฉ์ ์ ๊ฐ ๋ฐ๋ก ์ค๋ช ๋๋ฆด ํ์ ์์ด ๊ด๋ จ๋ ๋ด์ฉ์ ์ฐพ์๋ณด์๋ฉด ๋์ฌ ๊ฒ ๊ฐ์ต๋๋ค.2โฃ๋ธ๋ผ์ฐ์ SSO ๊ด๋ จ์ ํญ์ ์ด์ด ํ์ฌ2 ์น ์๋น์ค๋ก ์ด๋ ์,์ฌ๋ก๊ทธ์ธ ์์ด ์๋์ผ๋ก ์ธ์ฆ(Single Sign-On) ๋๊ฒ ํ๋ ค๋ฉด ์ด๋ค ๋ฐฉ์์ด ๋ง์ด ์ฌ์ฉ๋๋์? -> OAuth 2.0 ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง OIDC (OpenID Connect)๋ฅผ ์ฌ์ฉํ๋๊ฒ ์ผ๋ฐ์ ์ ๋๋ค. ์ด๊ฒ๋ ์ด๋ฏธ ์ผ๋ฐ์ ์ผ๋ก ์๋ ค์ ธ์๋ ํ๋กํ ์ฝ์ด๋ผ์ ์ ๊ฐ ๋ฐ๋ก ์ค๋ช ๋๋ฆด ํ์๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค.๋ค๋ง ์ด๋ฐ ํ๋กํ ์ฝ์ ๋์ ํ๊ธฐ ์ด๋ ค์ด ์ํฉ์ด๊ณ , ์ผํ์ฑ์ผ๋ก ์ฌ์ฉํ ๋งํ ๊ธฐ๋ฅ์ ์ํ๋๊ฑฐ๋ผ๋ฉด ์๋์ ๊ฐ์ด JWT ๋ฌธ์์ด์ ํ๋ผ๋ฏธํฐ๋ก ๋๊ธฐ๋ ๋ฐฉ๋ฒ๋ ํ์ฉํด๋ณผ ์ ์์ต๋๋ค. https://company2.com/sso/jwt-login?token=eyJhbGciOi... ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ด ๋์๊น์? ํน์ ๋ ๊ถ๊ธํ ๋ด์ฉ ์์ผ๋ฉด ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์.๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 43
Q&A
์๋ ํ์ธ์ ์ฃผ๋ฌธ์ฒ๋ฆฌ์ ๊ดํ์ฌ ์ง๋ฌธ์์ต๋๋ค ใ ใ ใ
์ ์ธํธ๋ ์๋ ํ์ธ์!์ฐ์ ์ข์ ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ง์ํ์ ๊ฒ์ฒ๋ผ ์ํฉ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ง์ถ๊ธฐ ์ํ ๋ก์ง๋ค์ด ๋นํจ์จ์ , ๋นํฉ๋ฆฌ์ ์ด๋ผ๊ณ ๋๊ปด์ง๋ ์ํฉ์ด ๋ถ๋ช ์์ต๋๋ค.๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ง์ถ๊ธฐ ์ํ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ๋ค ์ค ์ด๋ค ํ๋์ ๋ฐฉ์์ด ์ ๋์ ์ผ๋ก ์ข์ ๊ฒ์ ์์ผ๋ฉฐ, ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ๊ณผ ํธ๋ํฝ ํจํด์ ๋ฐ๋ผ ์ต์ ์ ํด๋ฒ์ด ๋ฌ๋ผ์ง๋๋ค. ํฌ๊ฒ ์ธ ๊ฐ์ง ์ํฉ์ผ๋ก ๋๋์ด ์ด๋ค ์ ๋ต์ ์ฌ์ฉํ๋์ง ๋จผ์ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.1. ์ผ๋ฐ์ ์ธ ์ผํ๋ชฐ ํ๊ฒฝ์ผ ๋ โ ์ฌ๊ณ ์์ฝ (๊ฐ์ฌ๊ณ ์ฐจ๊ฐ)์ํฉ: ๋๋ถ๋ถ์ ์ด์ปค๋จธ์ค์ฒ๋ผ ์ฌ์ฉ์๊ฐ ์ํ์ ๊ณ ๋ฅด๊ณ ๊ฒฐ์ ํ๋ ๋ฐ ์ ๋ถ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉฐ, ํธ๋ํฝ์ด ์์ธก ๊ฐ๋ฅํ ์์ค์ผ ๋.์ด์ : ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ์์คํ ๋ถํ ์ฌ์ด์ ๊ท ํ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ๊ฒฐ์ ์๊ฐ ๋์ ์ฌ๊ณ ๋ฅผ ๋ณด์ฅํด์ฃผ๋ฉด์๋, ์ ์ฒด ์์คํ ์ ๋ฝ(Lock)์ ๊ฑธ์ง ์์ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ง์ ์ ์์ต๋๋ค. 2. ์๋ฒ ๋ด์์ ๋ชจ๋ ์ฒ๋ฆฌ๊ฐ ๋งค์ฐ ์งง๊ฒ ๋๋ ๋ โ ๋น๊ด์ ๋ฝ (Pessimistic Lock)์ํฉ: ์ธ๋ถ ์์คํ (PG์ฌ ๋ฑ) ์ฐ๋์ด๋ ์ฌ์ฉ์ ๋๊ธฐ ์์ด, ์๋ฒ ๋ด๋ถ API ํธ์ถ๋ง์ผ๋ก ๋ชจ๋ ๋น์ฆ๋์ค ๋ก์ง(์ฌ๊ณ ํ์ธ, ์ฐจ๊ฐ, ์ํ ๋ณ๊ฒฝ ๋ฑ)์ด ์์ญ ~ ์๋ฐฑ ๋ฐ๋ฆฌ์ด(ms) ์์ ๋๋ ๋.์ด์ : ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๊ฐ์ฅ ํ์คํ๊ฒ ๋ณด์ฅํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํธ๋์ญ์ ์ด ๋งค์ฐ ์งง์ ๋ฝ์ผ๋ก ์ธํ ์ฑ๋ฅ ์ ํ ์ํฅ์ด ๋ฏธ๋ฏธํ ๋ ํจ๊ณผ์ ์ ๋๋ค. 3. ํน์ ์๊ฐ์ ํธ๋ํฝ์ด ํญ์ฃผํ ๋ โ ์ ์ฐฉ์ ๋๊ธฐ์ด (Queueing)์ํฉ: ํ์ ํ ์ํ ํ๋งค, ๊ณต์ฐ ํฐ์ผํ , ๋ช ์ ๊ธฐ์ฐจํ ์๋งค, ์๊ฐ ์ ์ฒญ ๋ฑ ํน์ ์๊ฐ์ ์์ธก ๋ถ๊ฐ๋ฅํ ๋๊ท๋ชจ ํธ๋ํฝ์ด ๋ชฐ๋ฆด ๋.์ด์ : DB์ ์๋ฒ๋ฅผ ๋ณดํธํ๊ณ , ์ฌ์ฉ์์๊ฒ ๊ณต์ ํ ์ ์ฐฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ต์ฐ์ ๋ชฉํ์ผ ๋ ์ฌ์ฉํฉ๋๋ค. ์ ๋ฐฉ์๋ค ๊ฐ๊ฐ์ ๋ํด ์ด๋ค ๋ฐฉ์์ธ์ง, ์ฃผ์ํ ์ ๊ณผ ์ ์ฉ ์ฌ๋ก๋ฅผ ์ค์ฌ์ผ๋ก ์ด์ผ๊ธฐ๋๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 1. ์ฌ๊ณ ์์ฝ (๊ฐ์ฌ๊ณ ์ฐจ๊ฐ)์ด๋ค ๋ฐฉ์์ธ๊ฐ? ์ฌ์ฉ์๊ฐ ๊ฒฐ์ ๋ฅผ ์์ํ๊ธฐ ์ง์ , ์ฌ๊ณ ๋ฅผ ๋ฏธ๋ฆฌ '์์ฝ' ์ํ๋ก ์ ์ ํ๋ ๋ฐฉ์์ ๋๋ค. ์ค์ ์ฌ๊ณ ๋ฅผ ์ฐจ๊ฐํ๊ฑฐ๋, '์์ฝ๋ ์ฌ๊ณ ' ์๋์ ๋ณ๋๋ก ๊ด๋ฆฌํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๊ฒฐ์ ๋ฅผ ์๋ฃํ๋ฉด ์์ฝ ์ํ๋ฅผ 'ํ์ '์ผ๋ก ๋ณ๊ฒฝํ๊ณ , ์ผ์ ์๊ฐ ๋ด์ ๊ฒฐ์ ํ์ง ์์ผ๋ฉด ์์ฝ์ ์๋์ผ๋ก ์ทจ์ํ์ฌ ์ฌ๊ณ ๋ฅผ ๋ณต๊ตฌ์ํต๋๋ค.์ฃผ์ํ ์ ์์ฝ ์๋ ์ทจ์ ๋ก์ง ํ์: ๊ฒฐ์ ์คํจ๋ ์ฌ์ฉ์ ์ดํ๋ก ์ธํด ์ ์ ๋ ์ฌ๊ณ (์ ๋ น ์ฌ๊ณ )๊ฐ ์์ํ ๋จ์์์ง ์๋๋ก, ์ค์ผ์ค๋ฌ(๋ฐฐ์น) ๋ฑ์ ์ด์ฉํด ์ผ์ ์๊ฐ ์ด์ ๋ '๊ฒฐ์ ๋๊ธฐ' ์ฃผ๋ฌธ์ ์ฐพ์ ์ฌ๊ณ ๋ฅผ ๋ณต๊ตฌ์ํค๋ ๋ก์ง์ ๋ฐ๋์ ๊ตฌํํด์ผ ํฉ๋๋ค.์ํ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ: ์ฃผ๋ฌธ์ ์ํ('๊ฒฐ์ ๋๊ธฐ์ค', '๊ฒฐ์ ์๋ฃ', '์ฃผ๋ฌธ ์ทจ์' ๋ฑ)๋ฅผ ๋ช ํํ๊ฒ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.์ ์ฉ ์ฌ๋ก๋๋ถ๋ถ์ ์จ๋ผ์ธ ์ผํ๋ชฐ(์๋ฅ, ์ ์์ ํ ๋ฑ)ํญ๊ณต๊ถ, ์๋ฐ ๋ฑ ์์ฝ ํ ์ผ์ ์๊ฐ ๋ด ๊ฒฐ์ ๊ฐ ํ์ํ ์์ฝ ์์คํ 2. ๋น๊ด์ ๋ฝ (Pessimistic Lock)์ด๋ค ๋ฐฉ์์ธ๊ฐ? ํน์ ๊ณต์ ์์(์: ์ํ ์ฌ๊ณ )์ ๋ํ ์ ๊ทผ์ ํ ๋ฒ์ ํ๋์ ์ค๋ ๋(๋๋ ํ๋ก์ธ์ค)๋ง ๊ฐ๋ฅํ๋๋ก ๋จผ์ ์ ๊ธ์ ํ๋ํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค. ํ ํธ๋์ญ์ ์ด ์ฌ๊ณ ๋ฅผ ์์ ํ๋ ๋์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ ๊ธ์ด ํด์ ๋ ๋๊น์ง ๋๊ธฐํด์ผ ํฉ๋๋ค. ๊ตฌํ ๋ฐฉ์์ ์๋ฒ ํ๊ฒฝ์ ๋ฐ๋ผ ๋๋ฉ๋๋ค.๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฝ ํ์ฉ: ์๋ฒ๊ฐ 1๋์ผ ๋ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SELECT ... FOR UPDATE ๊ฐ์ ๊ธฐ๋ฅ์ ์ด์ฉํด ํน์ ๋ฐ์ดํฐ ํ(row)์ ์ ๊ธ์ ๊ฒ๋๋ค. ํธ๋์ญ์ ์ด ์ข ๋ฃ๋๋ฉด ์ ๊ธ์ ์๋์ผ๋ก ํด์ ๋ฉ๋๋ค.๋ถ์ฐ ๋ฝ (Distributed Lock) ํ์ฉ: ํธ๋ํฝ ๋ถ์ฐ์ ์ํด ์๋ฒ๊ฐ ์ฌ๋ฌ ๋(Scale-out)์ธ ํ๊ฒฝ์์ ํ์์ ์ ๋๋ค. ๊ฐ ์๋ฒ๊ฐ ๋์ผํ DB ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค๊ณ ํ ๋ DB ๋ฝ๋ง์ผ๋ก๋ ๋์์ฑ์ ์ ์ดํ๊ธฐ ์ด๋ ต๊ฑฐ๋ ๋นํจ์จ์ ์ผ ์ ์์ต๋๋ค. ์ด๋ Redis๋ Zookeeper ๊ฐ์ ๋ณ๋์ ์ค์ ๊ด๋ฆฌ ์์คํ ์ ํตํด ์ ๊ธ์ ํ๋ํ๊ณ ํด์ ํฉ๋๋ค.๋์ ์๋ฆฌ (Redis ์์):์ฌ๊ณ ๋ฅผ ์์ ํ๋ ค๋ ์๋ฒ๊ฐ Redis์ setnx(set if not exists) ๋ช ๋ น์ด๋ก product:123:lock๊ณผ ๊ฐ์ ๊ณ ์ ํ ํค(Key)๋ฅผ ์์ฑํ๋ ค๊ณ ์๋ํฉ๋๋ค.ํค ์์ฑ์ ์ฑ๊ณตํ ์๋ฒ๊ฐ '์ ๊ธ ํ๋'์ผ๋ก ๊ฐ์ฃผํ๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.๋ค๋ฅธ ์๋ฒ๋ค์ ํค๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ฏ๋ก ์ ๊ธ ํ๋์ ์คํจํ๊ณ ๋๊ธฐํ๊ฑฐ๋ ์ฌ์๋ํฉ๋๋ค.์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ํด๋น ํค๋ฅผ ์ญ์ ํ์ฌ ์ ๊ธ์ ํด์ ํฉ๋๋ค.์ฃผ์ํ ์ ๋ฝ(Lock) ์ ์ ์๊ฐ ์ต์ํ: ๋ฝ์ ๊ฑฐ๋ ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ์์คํ ์ ์ฒด ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ์ ํ๋ฉ๋๋ค. ํธ๋์ญ์ ๋ด์ PG์ฌ ์ฐ๋์ด๋ ์ธ๋ถ API ํธ์ถ์ฒ๋ผ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋ก์ง์ด ํฌํจ๋๋ฉด ์ ๋ ์ ๋ฉ๋๋ค.๋ฐ๋๋ฝ(Deadlock) ๊ฐ๋ฅ์ฑ: ์ฌ๋ฌ ๋ฐ์ดํฐ์ ์์๋ฅผ ์งํค์ง ์๊ณ ๋ฝ์ ๊ฑธ๋ฉด ํธ๋์ญ์ ๋ค์ด ์๋ก๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐ๋๋ฝ ์ํ์ ๋น ์ง ์ ์์ด ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.(๋ถ์ฐ ๋ฝ) ๋ฝ ํด์ ๋ณด์ฅ: ์ ๊ธ์ ํ๋ํ ์๋ฒ๊ฐ ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ ์ค ์ฅ์ ๋ก ๋ค์ด๋๋ฉด ์ ๊ธ์ด ํด์ ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ๊ธ์ ์ ํจ์๊ฐ(TTL)์ ์ค์ ํ๋ ๋ฑ์ ์ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ๊ฐ ๋ฐ๋์ ํ์ํฉ๋๋ค.์ ์ฉ ์ฌ๋ก์ฌ์ฉ์ ๊ฐ์ ์์ด ์๋ฒ ๊ฐ ํต์ ์ผ๋ก ๋น ๋ฅธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ฌ๋ฌ ์๋ฒ์ ๊ฑธ์ณ์๋ ๋ถ์ฐ ํ๊ฒฝ์์ ํน์ ์์ (์: ์ ์ฐฉ์ ์ฟ ํฐ ๋ฐ๊ธ)์ ๋์ ์คํ์ ๋ง์์ผ ํ ๋ 3. ์ ์ฐฉ์ ๋๊ธฐ์ด (Queueing)์ด๋ค ๋ฐฉ์์ธ๊ฐ? ์ฃผ๋ฌธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด DB์ ๋ฐ๋ก ๋ฐ์ํ์ง ์๊ณ , Redis๋ Kafka ๊ฐ์ ๋๊ธฐ์ด ์์คํ ์ ์์ฒญ์ ๋จผ์ ์์ต๋๋ค. ๋ณ๋์ ์ฒ๋ฆฌ๊ธฐ(Worker)๊ฐ ๋๊ธฐ์ด์์ ์์ฒญ์ ํ๋์ฉ ๊บผ๋ด ์์๋๋ก ์ฒ๋ฆฌํ๋ฉฐ ์ฌ๊ณ ๋ฅผ ์ฐจ๊ฐํฉ๋๋ค.์ฃผ์ํ ์ ์ฌ์ฉ์ ํผ๋๋ฐฑ ๊ตฌํ: ์ฌ์ฉ์๋ ์์ ์ด ๋๊ธฐ์ด์ ๋ค์ด๊ฐ๋ค๋ ์ฌ์ค๊ณผ ์์ ์๋ฒ/์๊ฐ ๋ฑ์ ์์์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํ ํ๋ก ํธ์๋-๋ฐฑ์๋ ๊ฐ์ ์ค์๊ฐ ํต์ (Polling, WebSocket ๋ฑ) ๊ตฌํ์ด ํ์ํฉ๋๋ค.์์คํ ๋ณต์ก๋ ์ฆ๊ฐ: Redis, ๋ฉ์์ง ํ, ๋ณ๋์ ์์ปค ํ๋ก์ธ์ค ๋ฑ ๊ด๋ฆฌํด์ผ ํ ์์คํ ๊ตฌ์ฑ์์๊ฐ ๋์ด๋ฉ๋๋ค.์ ์ฉ ์ฌ๋ก์ธํฐํํฌ ๊ฐ์ ์ฝ์ํธ, ์คํฌ์ธ ๊ฒฝ๊ธฐ ํฐ์ผ ์๋งค ์์คํ ๋์ดํค ๋๋ก์ฐ ๊ฐ์ ํ์ ํ ์ ๋ฐ/์๋ฅ ํ๋งค๋ํ๊ต ์๊ฐ์ ์ฒญ ์์คํ ์ผ๋ฐ์ ์ธ ์ผ์ด์ค๋ ์์ ์๋ ์ฌ๋ก๋ค๋ก ๋ชจ๋ ์ปค๋ฒ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ์ฉ์, ์์คํ ์ด ๋๋ผ๊ธฐ์ ๋ถํฉ๋ฆฌ์ ์ด๊ฑฐ๋ ๋นํจ์จ์ ์ธ ๋ถ๋ถ์ด ๊ฐ๊ฐ์ ๋ฐฉ์์ ๋ค ์กด์ฌํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐฉ์๊ณผ ์ฃผ์์ ์ ํ์ธํด๋ณด๊ณ ์ฐ๋ฆฌ ์๋น์ค์ ์ ์ ํ ๋ฐฉ์์ ์ ํํ๋ฉด ๋ฉ๋๋ค!ํน์ ์ถ๊ฐ์ ์ผ๋ก ๊ถ๊ธํ ๋ด์ฉ ์์ผ๋ฉด ์ถ๊ฐ ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์!๊ฐ์ฌํฉ๋๋ค.
- 2
- 2
- 70
Q&A
kibana > dicover ํ๋ฉด์ด ๋ค๋ฅด๊ฒ ๋์์
ewgregerg c๋ ์๋ ํ์ธ์!์๋ง ES์ ์๋ฌด ๋ฐ์ดํฐ๋ ์์ด์ (์๋ฌด ์ธ๋ฑ์ค๊ฐ ์์ด์) ์ด๋ ๊ฒ ๋์ค๋ ๊ฒ ๊ฐ์๋ฐ์, ํน์ ์์ ๋จ๊ณ์์ ์งํํ๋ ES์ ๋ก๊ทธ๋ฅผ ์๋๊ฑธ ์งํํ์ ๊ฒ ๋ง์๊น์?! ES์ ์๋ฌด ๋ฐ์ดํฐ๋ ์์ธํ์ง ์์ ์ํ์์๋ ์ง๊ธ ๋ณด๊ณ ๊ณ์ ๊ฒ์ฒ๋ผ ๋์ค๋๊ฒ ์ ์์ ๋๋ค.ํ๋ฒ ํ์ธํด๋ณด์๊ณ ์ถ๊ฐ ์ง๋ฌธ ์ฃผ์๋ฉด ๋ต๋ณ ๋๋ฆฌ๊ฒ ์ต๋๋ค!
- 0
- 2
- 39
Q&A
[๋ฐ์ดํฐ ๋ฒ์ ๋์ ํ์ฉํ ๋ฉฑ๋ฑ์ฑ ์ฒ๋ฆฌ] ๋ฉฑ๋ฑ์ฑ ๋ณด์ฅ์ ์ํ version ๋น๊ต ์ง๋ฌธ
100and๋ ์๋ ํ์ธ์!์ ๊ฐ ์ต๊ทผ ์ธํ๋ฐ ์ง๋ฌธ๊ธ์ ํ์ธ ๋ชปํด์ ๋ต๋ณ์ด ๋ฆ์์ต๋๋ค. ใ ์ฃ์กํฉ๋๋ค. ์ง๋ฌธ ์ฃผ์ ๋ด์ฉ์ ๋ฐ๋ก ์ง์ ์ ๋ค๋ฅธ๋ถ๊ป์ ์ง๋ฌธ์ฃผ์ ๋ด์ฉ์ด๋ ๋์ผํ ๋ด์ฉ ๊ฐ์๋ฐ ํ๋ฒ ์๋ ์ง๋ฌธ-๋ต๋ณ ์ฝ์ด๋ณด์๊ณ ์ถ๊ฐ์ ์ผ๋ก ๊ถ๊ธํ ๋ด์ฉ ์์ผ๋ฉด ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์!! https://inf.run/Dj9Hs ๋ค์ํ๋ฒ ๋๋ฌด ๋ฆ๊ฒ ๋ต๋ณ ๋๋ ค ์ฃ์กํฉ๋๋ค. (_ _)
- 1
- 2
- 69
Q&A
๋ฐ์ดํฐ ๋ฒ์ ๋ ์ง๋ฌธ
HAHA๋ ์๋ ํ์ธ์~์ฐ์ ๊ฐ์ ์ ๋ด์ฃผ์๊ณ , ์ข์ ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ ์นด๋ก์ด ์ง๋ฌธ์ด๋ค์. ใ ใ ๋จ์ํ ์ด๋ฒคํธ ๋ฒ์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ์ ๋น๊ตํด์ ๋ค๋ฅด๋ฉด ๋ฌด์ํ๋ ๋ฐฉ์๋ง์ผ๋ก๋, ๋์์ ๋ฐ์ํ๋ '๋์ผํ ์ํ์ ๋ํ ์ง์ง ์๋ก ๋ค๋ฅธ' ์ฌ๊ณ ๊ฐ์ ์์ฒญ ์ค ๋ค์ ๋ฐํ๋๋ ์์ฒญ์ด ์ ์ค๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.์ด ๋ฌธ์ ๋ ๋์ผํ ์ด๋ฒคํธ์ '์ค๋ณต ์ฒ๋ฆฌ'๋ฅผ ๋ง๋ ๋ฉฑ๋ฑ์ฑ ๋ฌธ์ ์๋ ๋ค๋ฅธ, ์ฌ๋ฌ ์ ํจํ ์์ฒญ์ด ๊ฒฝํฉํ๋ ๋์์ฑ ์ ์ด์ ๋ฌธ์ ์ ๋๋ค. ๋ฌธ์ ์ํฉ: ์ ํจํ ์ฃผ๋ฌธ์ ์ ์ค๋ง์ํ์ ์๋๋ฆฌ์ค๋ฅผ ํ๋ฆ์ผ๋ก ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.์ด๊ธฐ ์ํ: ์ํ A์ ์ฌ๊ณ ๋ 10๊ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB)์ ๋ฒ์ ์ 5์ ๋๋ค.์ฃผ๋ฌธ 1 ๋ฐ์: ํ๋ก๋์๊ฐ ์ํ A์ ์ ๋ณด(๋ฒ์ 5)๋ฅผ ์ฝ๊ณ , ์ฌ๊ณ ๊ฐ์ ์ด๋ฒคํธ(A)๋ฅผ ๋ฐํํฉ๋๋ค.์ฃผ๋ฌธ 2 ๋ฐ์: ๊ฑฐ์ ๋์์, ์์ง ์ฃผ๋ฌธ 1์ ์ด๋ฒคํธ๊ฐ ์ปจ์๋จธ์ ์ํด ์ฒ๋ฆฌ๋๊ธฐ ์ ์, ๋ค๋ฅธ ํ๋ก๋์๊ฐ ์ํ A์ ์ ๋ณด(์ฌ์ ํ ๋ฒ์ 5)๋ฅผ ์ฝ๊ณ , ์ฌ๊ณ ๊ฐ์ ์ด๋ฒคํธ(B)๋ฅผ ๋ฐํํฉ๋๋ค.์ปจ์๋จธ ์ฒ๋ฆฌ:์ด๋ฒคํธ A๊ฐ ๋จผ์ ๋์ฐฉํฉ๋๋ค. DB ๋ฒ์ (5)๊ณผ ์ด๋ฒคํธ ๋ฒ์ (5)์ด ์ผ์นํ๋ฏ๋ก ์ฌ๊ณ ๋ฅผ 9๋ก ๊ฐ์์ํค๊ณ , DB ๋ฒ์ ์ 6์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. (์ฑ๊ณต)์ด๋ฒคํธ B๊ฐ ๋์ฐฉํฉ๋๋ค. ์ด๋ฒคํธ์ ๋ด๊ธด ๋ฒ์ ์ 5์ด์ง๋ง, ํ์ฌ DB ๋ฒ์ ์ 6์ ๋๋ค. ๋ฒ์ ์ด ๋ค๋ฅด๋ฏ๋ก ์ปจ์๋จธ๋ ์ด ์์ฒญ์ ๋ฌด์ํฉ๋๋ค. (์คํจ ๋ฐ ์ ์ค)์ด ๊ฒฝ์ฐ, ๋ถ๋ช ํ ์ ํจํ ์ฃผ๋ฌธ์ด์๋ '์ฃผ๋ฌธ 2'๊ฐ ๊ทธ๋ฅ ๋ฌด์๋์ด๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.(์ด๊ฑธ ๋ฌผ์ด๋ณด์ ๊ฒ ๋ง๊ฒ ์ฃ ? ใ ใ ) ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ปจ์๋จธ์ ๋ก์ง์ด ๋ ์ ๊ตํด์ ธ์ผ ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๊ณ ์ ID๋ฅผ ์ฌ์ฉํ ๋ฉฑ๋ฑ์ฑ ์ฒ๋ฆฌ์ ๋ฒ์ ์ ์ฌ์ฉํ ๋์์ฑ ์ ์ด๋ฅผ ๋ชจ๋ ์ ์ฉํ๋ ๊ฒ์ ๋๋ค. 1๋จ๊ณ: ๋ฉฑ๋ฑ์ฑ ํค(Idempotency Key)๋ก ์ค๋ณต๋ถํฐ ํ์ธ๋ชจ๋ ์ด๋ฒคํธ๋ eventId๋ orderId์ ๊ฐ์ด ์ ๋ ์ค๋ณต๋์ง ์๋ ๊ณ ์ ID๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค.์ปจ์๋จธ๋ ๋ก์ง์ ์์ํ๊ธฐ ์ ์, "์ด๋ฏธ ์ฒ๋ฆฌํ ID์ธ์ง"๋ฅผ ๋ณ๋์ processed_events ๊ฐ์ ํ ์ด๋ธ์ ํ์ธ(INSERT ์๋)ํฉ๋๋ค.๋ง์ฝ ID๊ฐ ์ด๋ฏธ ์๋ค๋ฉด? โ ์ด๊ฒ์ '์ง์ง ์ค๋ณต' ์ด๋ฒคํธ์ ๋๋ค. ์ฆ์ ์ฒ๋ฆฌ๋ฅผ ์ค๋จํ๊ณ ๋ฌด์ํฉ๋๋ค. ์ด ๋จ๊ณ์์ ์ค์ ์ค๋ณต ๋ฌธ์ ๋ ์๋ฒฝํ ๊ฑธ๋ฌ๋ผ ์ ์์ต๋๋ค.2๋จ๊ณ: ๋ฒ์ ์ผ๋ก ๋์์ฑ ์ถฉ๋ ํ์ธID๊ฐ ์ฒ์ ๋ค์ด์จ ๊ฒ์ด๋ผ๋ฉด? โ ์ด์ ์ด๊ฒ์ '์ค๋ณต'์ด ์๋ '์ ์' ์ด๋ฒคํธ(์์๊ฐ ๋ฐ๋ ธ์ ์๋ ์๋)์์ด ๋ณด์ฅ๋ฉ๋๋ค.์ด ์ํ์์ ์ด์ ๋ต๋ณ์์ ์ค๋ช ํ ๋ฒ์ ๋น๊ต ๋ก์ง์ ์ํํฉ๋๋ค.๋ฒ์ ์ผ์น: ์ฒซ ์ฒ๋ฆฌ์ด๋ฏ๋ก ์ฌ๊ณ ๋ฅผ ๊ฐ์์ํต๋๋ค.๋ฒ์ ๋ถ์ผ์น: ๋ค๋ฅธ ์ ์ ์ฃผ๋ฌธ์ ์ํด ์์๊ฐ ๋ฐ๋ฆฐ ๊ฒ์ด๋ฏ๋ก, ํ์ฌ DB ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๊ณ ๋ฅผ ์ฌํ์ธํ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์๋ํฉ๋๋ค. ์ด๋ฌํ 'ID๋ก ์ค๋ณต์ ๋จผ์ ๊ฑฐ๋ฅด๊ณ , ๋ฒ์ ์ผ๋ก ์์๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ'์ ํตํด, ์ง๋ฌธํด์ฃผ์ ์ํฉ์ ๋ํด ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์งํฌ ์ ์์๊ฒ๋๋ค. ๋ณธ ์์์์๋ ๋์์ฑ ์ ์ด๋ณด๋ค๋ ์ฅ์ ์ํฉ์ผ๋ก ์ธํด ์ฌ์๋ ๋๋ ๋ฑ ์ค๋ณต ๋ฐํ๋ ๋ฐ์ดํฐ์ ๋ํด ๋ฉฑ๋ฑ์ฑ์ด ์๋์ง์ ํฌ์ปค์ค๋ฅผ ๋ง์ถฐ์ ๊ฐ์์์ ์ด์ผ๊ธฐ ํ ๊ฒ์ฒ๋ผ ์ค๋ช ๋์์ต๋๋ค! ์ด ์ง๋ฌธ๊ธ์ ๊ฐ์ ๋ ธํธ์๋ ๋งํฌ ์ถ๊ฐํด๋๊ฒ ์ต๋๋ค~ํน์ ๋ ๊ถ๊ธํ ๋ด์ฉ ์์ผ๋ฉด ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์~!๊ฐ์ฌํฉ๋๋ค!
- 1
- 2
- 61
Q&A
๋ฐฐํฌ์๋ํ ์ง์..
์ด๊ฒฝ์ฉ๋ ์๋ ํ์ธ์~๋ช๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๊ธดํ๋ฐ ํน์ DB ๋น๋ฐ๋ฒํธ ๋ฑ GitHub๋ก ๋ ธ์ถ๋์ง ์์์ผ๋ฉด ์ข๊ฒ ๋ ๊ฐ(Secret ์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค)์ด ์์ด์ ๊ทธ๋ฐ๊ฑธ๊น์? ์ด๋ค ์๋๋์ ๋ฐ๋ผ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ง ๊ฒ ๊ฐ์ต๋๋ค~! ๋ง์ฝ ์๋๋ฐฐํฌ ๊ทธ ์์ฒด๋ฅผ ํ๊ณ ์ถ์ผ์ ๊ฑฐ๋ผ๋ฉด ๋ก์ปฌ ๊ฐ๋ฐํ๊ฒฝ์์ package ํ์ฌ jar ํ์ผ์ ์์ฑํ ํ scp ๋ฑ ๋ช ๋ น์ด๋ก ์ง์ ์๋ฒ์ ์ ๋ก๋ํ์ฌ ์คํ์ํค๋ ๋ฐฉ๋ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๊ฒ ์๋๋ผ Secret์ ์จ๊ธฐ๊ณ ์ถ์๊ฑฐ๋ผ๋ฉด,์๋ฒ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํด์ฃผ๊ฑฐ๋Jenkins ๋ฑ์์ ๋ฐฐํฌํ ๋ ์คํฌ๋ฆฝํธ๋ก ์ฃผ์ ์์ผ ์ฃผ๊ฑฐ๋Vault ๊ฐ์ ์ํฌ๋ฆฟ ์ ์ฅ์๋ฅผ ํ์ฉํ๊ฑฐ๋์ฟ ๋ฒ๋คํฐ์ค(K8s) ๊ฐ์๊ฑธ ์ฌ์ฉํ๋ค๋ฉด ํด๋ฌ์คํฐ ๋ด๋ถ์ Secret์ ํ์ฉํ๋ ๋ฐฉ๋ฒ ๋ฑ ๋ค์ํ๊ฒ ์์ ๊ฒ ๊ฐ์ต๋๋ค.ํน์ ์ด๋ค ์๋์ธ์ง ์ด์ผ๊ธฐํด์ฃผ์๋ฉด ์ถ๊ฐ์ ์ผ๋ก ๋ต๋ณ ๋๋ฆฌ๊ฒ ์ต๋๋ค!
- 1
- 1
- 33








