Skip to content
View sunhongmin225's full-sized avatar

Organizations

@bacchus-snu

Block or report sunhongmin225

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
sunhongmin225/README.md

๐ŸŒ ์ด ํŽ˜์ด์ง€๋Š” ํ•œ๊ตญ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ‘‰ Click here for English version

์•ˆ๋…•ํ•˜์„ธ์š”, DevOps & Site Reliability Engineer ๋ฏผ์„ ํ™์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ Table of Contents

๐Ÿ’ผ Work Experience

  • ๋ธ”๋Ÿญ์Šค (์ฃผ์‹ํšŒ์‚ฌ ์ œํŠธ์—์ด์•„์ด) (2023๋…„ 1์›” - 2025๋…„ 6์›”)
    • Information Security and DevOps Lead (2024๋…„ 8์›” - 2025๋…„ 6์›”)
      • SOC 2 Type I ๋ฐ Type II ์ „ ๊ฐ์‚ฌ ๊ณผ์ •์„ ์ฃผ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์‚ฌ๋‚ด ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ ์ˆ˜๋ฆฝ ๋ฐ ๊ต์œก ์‹ค์‹œ, ๋ฐฑ์—… ๋ฐ ๋ณต์› ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰, ์œ„ํ—˜ ํ‰๊ฐ€ ์‹ค์‹œ, CloudTrail/WAF/GuardDuty ๊ตฌ์„ฑ์„ ํฌํ•จํ•œ ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ ๊ฐ•ํ™” ๋“ฑ 100๊ฐœ ์ด์ƒ์˜ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋Œ€์‘์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๊ฐ์‚ฌ ์—ญ์‹œ ๋‹จ๋…์œผ๋กœ ๋Œ€์‘ํ•˜์˜€๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๋ณด์•ˆ ์‚ฌ๊ณ  ์—†์ด 7๊ฐœ์›” ๋‚ด ์–‘ ๊ฐ์‚ฌ๋ฅผ ๋ชจ๋‘ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
    • MLOps Engineer (2023๋…„ 1์›” - 2024๋…„ 8์›”)

๐ŸŽ“ Education

  • ์„œ์šธ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€ ์„์‚ฌ (2021๋…„ 3์›” - 2023๋…„ 2์›”)
  • ์„œ์šธ๋Œ€ํ•™๊ต ์‚ฐ์—…๊ณตํ•™๊ณผ, ์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€ ํ•™์‚ฌ (๋ณต์ˆ˜ ์ „๊ณต, 2014๋…„ 3์›” - 2021๋…„ 2์›”)

๐Ÿข About Blux

  • ๋ธ”๋Ÿญ์Šค(๋ฒ•์ธ๋ช…: ์ฃผ์‹ํšŒ์‚ฌ ์ œํŠธ์—์ด์•„์ด)๋Š” ์ดˆ๊ฐœ์ธํ™” ์ƒํ’ˆ ์ถ”์ฒœ ๋ฐ CRM ๋งˆ์ผ€ํŒ… ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋Š” B2B SaaS ์Šคํƒ€ํŠธ์—…์œผ๋กœ, ๊ธฐ์—…์˜ ์ˆ˜์ต ์„ฑ์žฅ์„ ๋•๋Š” AI ๊ธฐ๋ฐ˜ ์ œํ’ˆ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • Blux Recommendation์€ ์‹ค์‹œ๊ฐ„ ์‚ฌ์šฉ์ž ํ–‰๋™ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฐœ์ธํ™” ์ƒํ’ˆ ์ถ”์ฒœ ์†”๋ฃจ์…˜์œผ๋กœ, ์›” 1,000๋งŒ ๋ช… ์ด์ƒ์˜ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ 100% ์‹ค์‹œ๊ฐ„ ์ถ”์ฒœ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ปค๋จธ์Šค ๊ธฐ์—…๋“ค์˜ ๊ตฌ๋งค ์ „ํ™˜์œจ์„ ๋„์ž… ์ด์ „ ๋Œ€๋น„ ์ตœ๋Œ€ 7๋ฐฐ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์„ฑ๊ณผ๋ฅผ ๋‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • Blux Message๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”์‹œ์ง• ์ฑ„๋„์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋ณ„๋กœ ์ตœ์ ์˜ ์ฝ˜ํ…์ธ , ๋ฐœ์†ก ํƒ€์ด๋ฐ, ์ˆ˜๋‹จ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒฐ์ •ํ•˜์—ฌ ๋งˆ์ผ€ํŒ… ์บ ํŽ˜์ธ์„ ์‹คํ–‰ํ•˜๋Š” ์ดˆ๊ฐœ์ธํ™” CRM ๋งˆ์ผ€ํŒ… ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.
  • ๋ธ”๋Ÿญ์Šค๋Š” ํด๋ผ์ด์–ธํŠธ๋ณ„ ๋งž์ถคํ˜• AI ๋ชจ๋ธ ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ์‹ค์„œ๋น„์Šค ์ ์šฉ๊นŒ์ง€์˜ ์ „์ฒด ๊ณผ์ •์„ ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•˜๋ฉฐ, ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ ๊ฐœ์›”์ด ์†Œ์š”๋˜๋˜ ์ถ”์ฒœ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ๋‹จ ๋ช‡ ์‹œ๊ฐ„ ๋‚ด์— ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ž๋™ํ™”๋œ SaaS ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ Projects @ Blux

๐Ÿ” ๊ธ€๋กœ๋ฒŒ ๋ณด์•ˆ ํ‘œ์ค€(SOC 2) ๊ฒ€์ฆ ์ค€๋น„ ๋ฐ ํ†ต๊ณผ

2024๋…„ 8์›” - 2025๋…„ 3์›”

๋ฐฐ๊ฒฝ

  • ๋ธ”๋Ÿญ์Šค๋Š” ๊ตญ๋‚ด์™ธ ์—ฌ๋Ÿฌ ๋Œ€๊ธฐ์—…์„ ๋Œ€์ƒ์œผ๋กœ B2B SaaS ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์˜์—… ๊ณผ์ •์—์„œ SOC 2 ๋“ฑ ๊ธ€๋กœ๋ฒŒ ๋ณด์•ˆ ํ‘œ์ค€์˜ ์ธ์ฆ ์—ฌ๋ถ€๊ฐ€ ์„ ์ œ ์กฐ๊ฑด์œผ๋กœ ์š”๊ตฌ๋˜๋Š” ์‚ฌ๋ก€๊ฐ€ ๋‹ค์ˆ˜ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • 2024๋…„ 4์›”์— ์ €์˜ ๋ฆฌ๋“œ ํ•˜์— ์ €ํฌ์˜ ์ œํ’ˆ์ด AWS Foundational Technical Review(FTR)๋ฅผ ํ†ต๊ณผํ•˜๋ฉฐ ์ „๋ฐ˜์ ์ธ ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ ์ƒํƒœ๋ฅผ ์ ๊ฒ€ํ•œ ๋ฐ”๊ฐ€ ์žˆ์—ˆ์œผ๋‚˜, SOC 2๋‚˜ ISO 27001์™€ ๊ฐ™์€ ๊ธ€๋กœ๋ฒŒ ์ˆ˜์ค€์˜ ๋ณด์•ˆ ์š”๊ฑด์„ ๊ธฐ์ค€์œผ๋กœ ๋ณด์•˜์„ ๋•Œ๋Š” ๋ฐฑ์—… ์ •์ฑ…, ์—”๋“œํฌ์ธํŠธ ๋ณดํ˜ธ, ์žฌํ•ด ๋ณต๊ตฌ ๊ณ„ํš ๋“ฑ ์‹ค์งˆ์ ์ธ ๋ณด์•ˆ ์ฒด๊ณ„๊ฐ€ ๋ฏธํกํ•œ ์ƒํƒœ์˜€์Šต๋‹ˆ๋‹ค.
  • ์ด์— ๋”ฐ๋ผ ๋ธ”๋Ÿญ์Šค์˜ ๋ณด์•ˆ ์ฒด๊ณ„๋ฅผ ๊ธ€๋กœ๋ฒŒ ๊ธฐ์ค€์— ๋งž๊ฒŒ ์ •๋น„ํ•˜๊ณ , SOC 2 Type I ๋ฐ Type II ๋ณด๊ณ ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๋Š” ๊ฒƒ์„ ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ์ตœ์ข… ๋ชฉํ‘œ๋กœ ์‚ผ์•˜์Šต๋‹ˆ๋‹ค.
  • ์ €๋Š” MLOps ์—”์ง€๋‹ˆ์–ด๋กœ์„œ์˜ ๊ธฐ์กด ์—ญํ• ์„ ํ™•์žฅํ•˜์—ฌ, 2024๋…„ 8์›”๋ถ€ํ„ฐ ํšŒ์‚ฌ ๋‚ด ์œ ์ผํ•œ ๋ณด์•ˆ ๋‹ด๋‹น์ž๋กœ์„œ SOC 2 ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฆฌ๋“œํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ

  • Drata ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ํ”„๋ ˆ์ž„์›Œํฌ ๊ตฌ์ถ•: SOC 2 ๋ณด์•ˆ ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋ณด์•ˆ ๊ด€๋ฆฌ ์ฒด๊ณ„๋ฅผ ์ •๋ฆฝํ•˜๊ธฐ ์œ„ํ•ด Drata ํ”Œ๋žซํผ์„ ๋„์ž…ํ•˜์˜€์Šต๋‹ˆ๋‹ค. Drata์—์„œ ์š”๊ตฌํ•˜๋Š” 100๊ฐœ ์ด์ƒ์˜ ์ปจํŠธ๋กค์„ ๊ธฐ์ค€์œผ๋กœ ์กฐ์ง์˜ ๊ธฐ์ˆ ยท๊ด€๋ฆฌ์  ๋ณด์•ˆ ํ•ญ๋ชฉ์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ ๊ฒ€ํ•˜์˜€์œผ๋ฉฐ, ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ณด์•ˆ ์ •์ฑ… ์ˆ˜๋ฆฝ, ๊ฐ์ข… ์ฆ๋น™ ๊ด€๋ฆฌ, ์ž๋™ํ™”๋œ ์ปดํ”Œ๋ผ์ด์–ธ์Šค ํŠธ๋ž˜ํ‚น ๋“ฑ์„ ์ผ๊ด€๋˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ํ†ต์ œ ๋ฐ ์ธํ”„๋ผ ๋Œ€์‘ ์ฒด๊ณ„ ๊ฐ•ํ™”
    • ์œ„ํ—˜ ํ‰๊ฐ€ ๋ฐ ๋ณด์•ˆ ์ •์ฑ… ์ˆ˜๋ฆฝ: ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ยท์šด์˜ ๋ฆฌ์Šคํฌ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์‚ฌ์ „ ์œ„ํ—˜ ํ‰๊ฐ€(Risk Assessment)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ด์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ „์‚ฌ ์ •๋ณด๋ณด์•ˆ ์ •์ฑ… ๋ฐ ํ•˜์œ„ ์„ธ๋ถ€ ์ •์ฑ…๋“ค์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ˆ˜๋ฆฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์ฃผ๊ธฐ์  ๋ฐฑ์—… ๋ฐ ๋ณต์› ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰: S3, RDS, MongoDB ๋“ฑ ์ฃผ์š” ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋ฐฑ์—… ํ”Œ๋žœ์„ ๋งˆ๋ จํ•˜๊ณ  ๋ณต์› ํ…Œ์ŠคํŠธ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๋น„์ฆˆ๋‹ˆ์Šค ์—ฐ์†์„ฑ ๋ฐ ์žฌํ•ด ๋ณต๊ตฌ (BC/DR) ๊ณ„ํš ์ˆ˜๋ฆฝ: ์—…๋ฌด ์ค‘๋‹จ ์ƒํ™ฉ์— ๋Œ€๋น„ํ•œ RTO ๋ฐ RPO ์„ค์ •๊ณผ ํ•จ๊ป˜, ์ „์‚ฌ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ์—ฐ์†์„ฑ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์‚ฌ๋‚ด ๋ณด์•ˆ ๊ต์œก ๋ฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์ฒด๊ณ„ํ™”: ์—ฐ๊ฐ„ ๋ณด์•ˆ ๊ต์œก์„ ์ •๋ก€ํ™”ํ•˜๊ณ , ์ž…ยทํ‡ด์‚ฌ์ž ๋ณด์•ˆ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ฐ ๊ถŒํ•œ ํšŒ์ˆ˜ ์ ˆ์ฐจ๋ฅผ ์ˆ˜๋ฆฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ ๊ด€๋ จ ์ฃผ์š” ์กฐ์น˜
    • ๊ณ„์ • ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ ๊ฐ•ํ™”:
      • ์„œ๋น„์Šค ๋ฐ ์‚ฌ์šฉ์ž ์—ญํ• ๋ณ„๋กœ IAM Role์„ ์„ธ๋ถ„ํ™”ํ•˜๊ณ  ์ตœ์†Œ ๊ถŒํ•œ ์›์น™์„ ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
      • CloudTrail์„ ํ†ตํ•ด ๋ชจ๋“  API ํ˜ธ์ถœ ๋ฐ ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๋กœ๊น…ํ•˜๊ณ , ๊ณ„์ • ์˜ค๋‚จ์šฉ์ด๋‚˜ ๊ถŒํ•œ ์˜ค์šฉ ์—ฌ๋ถ€๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์œ„ํ˜‘ ํƒ์ง€ ๋ฐ ๋ฐฉ์–ด ์ฒด๊ณ„ ๊ตฌ์„ฑ:
      • WAF์˜ ์—ฌ๋Ÿฌ ๊ทœ์น™์„ ํ†ตํ•ด IP ์ฐจ๋‹จ, Header ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง, Rate Limiting์„ ์„ค์ •ํ•˜์—ฌ ์ฃผ์š” ์—”๋“œํฌ์ธํŠธ๋ฅผ DoS์™€ ์•…์˜์  ์ ‘๊ทผ ๋“ฑ ์™ธ๋ถ€ ์œ„ํ˜‘์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.
      • GuardDuty๋ฅผ ํ†ตํ•ด ์˜์‹ฌ์Šค๋Ÿฌ์šด IAM ํ™œ๋™, ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ, ์™ธ๋ถ€ ์นจํˆฌ ์‹œ๋„ ๋“ฑ์„ ํƒ์ง€ํ•˜๊ณ , SNS๋ฅผ ํ†ตํ•œ ๊ฒฝ๊ณ  ์•Œ๋ฆผ ์ฒด๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ๊ฐ์‚ฌ ๋Œ€์‘ ๋ฐ ์—ฌ๋Ÿฌ ์ดํ•ด๊ด€๊ณ„์ž์™€์˜ ํ˜‘์—…
    • ์™ธ๋ถ€ ๊ฐ์‚ฌ ๊ธฐ๊ด€์ธ AssuranceLab๊ณผ์˜ ํ˜‘์—…์„ ํ†ตํ•ด ๊ฐ์‚ฌ ์ „ ์‚ฌ์ „ ์งˆ์˜ ๋Œ€์‘, ์ปจํŠธ๋กค ๋งคํ•‘ ๊ฒ€ํ† , ์ฆ๋น™ ์ œ์ถœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ „๋‹ดํ•˜์˜€์Šต๋‹ˆ๋‹ค. 100๊ฑด ์ด์ƒ์˜ ์ฆ๋น™(์Šคํฌ๋ฆฐ์ƒท, ์„ค์ • ๋‚ด์—ญ, ์šด์˜ ๋กœ๊ทธ ๋“ฑ)์„ ์ˆ˜์ง‘ ๋ฐ ์ •๋ฆฌํ•˜๊ณ , ๊ฐ์‚ฌ๊ด€์˜ ์งˆ์˜์— ๋Œ€ํ•œ ๊ธฐ์ˆ ์  ๋Œ€์‘๊ณผ ๋ชจ๋“  ๋ฌธ์„œํ™” ์ž‘์—…์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ํ•ด์™ธ ์—ฌ๋Ÿฌ ๊ธฐ๊ด€ ๋ฐ ๋‹ค์–‘ํ•œ ๋‚ด๋ถ€/์™ธ๋ถ€ ์ดํ•ด๊ด€๊ณ„์ž๋“ค๊ณผ์˜ ํ˜‘์—… ๊ณผ์ •์—์„œ ๋ช…ํ™•ํ•˜๊ณ  ์‹ ์†ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ์‚ฌ ๋Œ€์‘์„ ์›ํ™œํ•˜๊ฒŒ ํ•ด๋ƒˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

  • ์•ฝ 7๊ฐœ์›” ๋‚ด์— SOC 2 Type I ๋ฐ Type II ๋ณด๊ณ ์„œ๋ฅผ ๋ชจ๋‘ ๋ฐœ๊ธ‰๋ฐ›๋Š” ๋ฐ ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๊ตฌ์„ฑ์›๋“ค์˜ ๋ณด์•ˆ ์ธ์‹์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ, ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ ๊ด€๋ จ ์ฃผ์š” ์กฐ์น˜๋ฅผ ํ†ตํ•ด ์‹ค์งˆ์ ์ธ ๋ณด์•ˆ ์œ„ํ˜‘์„ ์ค„์ด๊ฑฐ๋‚˜ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์ธ์ฆ ์ค€๋น„ ๊ธฐ๊ฐ„๊ณผ ์ดํ›„ ์šด์˜ ๊ธฐ๊ฐ„์„ ํ†ตํ‹€์–ด ๋ณด์•ˆ ๊ด€๋ จ ์‚ฌ๊ณ ๋Š” ํ•œ ๊ฑด๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ๊ฐ์‚ฌ๊ธฐ๊ด€์œผ๋กœ๋ถ€ํ„ฐ ์ฒด๊ณ„์ ์ด๊ณ  ์‹ค์งˆ์ ์ธ ๋ณด์•ˆ ํ†ต์ œ ์ฒด๊ณ„๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค๋Š” ๊ธ์ •์ ์ธ ํ‰๊ฐ€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.
  • SOC 2 ๋ณด๊ณ ์„œ๋ฅผ ํ†ตํ•ด ๊ณ ๊ฐ์‚ฌ์™€์˜ ๋ฏธํŒ… ์‹œ ์‹ ๋ขฐ๋„๋ฅผ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์„ธ์ผ์ฆˆ ํŒ€์—์„œ๋Š” ๊ฐ•๋ ฅํ•œ ์…€๋ง ํฌ์ธํŠธ๋กœ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ๋‚ด์— ๋ณด์•ˆ ์กฐ์ง์ด๋‚˜ ์ „๋‹ด ์ธ๋ ฅ์ด ์—†๋Š” ์ƒํƒœ์—์„œ ๊ธ€๋กœ๋ฒŒ ๋ณด์•ˆ ํ‘œ์ค€์„ ์„ฑ๊ณต์ ์œผ๋กœ ํ†ต๊ณผํ•œ ๊ฒฝํ—˜์€ ๋ธ”๋Ÿญ์Šค์˜ ๋ณด์•ˆ ๋ฐ ๊ธฐ์ˆ  ์—ญ๋Ÿ‰๊ณผ ์‹คํ–‰๋ ฅ์„ ์™ธ๋ถ€์— ์ž…์ฆํ•˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ์œผ๋ฉฐ, ๊ทธ ์„ฑ๊ณผ๋ฅผ ์ธ์ •๋ฐ›์•„ AWS Unicorn Day 2025 ๋ฐœํ‘œ์ž๋กœ ์„ ์ •๋˜์–ด ๊ด€๋ จ ์ฃผ์ œ๋กœ ๋ฐœํ‘œ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

๐Ÿ”„ ๋ฌด์ค‘๋‹จ EKS ํด๋Ÿฌ์Šคํ„ฐ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ ๋ฐ ์ž๋™ํ™”๋œ Blue-Green ๋ฐฐํฌ ๋ชจ๋ธ ๊ตฌ์ถ•

2024๋…„ 5์›” - 2024๋…„ 7์›”

๋ฐฐ๊ฒฝ

  • ๊ธฐ์กด์— ์‚ฌ์šฉ ์ค‘์ด๋˜ EKS ํด๋Ÿฌ์Šคํ„ฐ์˜ Kubernetes ๋ฒ„์ „์ด ๊ณง ๊ณต์‹ ์ง€์› ์ข…๋ฃŒ(EOL)๋ฅผ ์•ž๋‘๊ณ  ์žˆ์–ด, ํด๋Ÿฌ์Šคํ„ฐ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šด์˜ ์ค‘์ธ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ง์ ‘ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๊ฒฝ์šฐ ๋ธ”๋Ÿญ์Šค๊ฐ€ ์šด์˜ํ•˜๋Š” ์„œ๋น„์Šค์˜ ์ผ์‹œ ์ค‘๋‹จ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์ด๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž 1,000๋งŒ ๋ช… ์ด์ƒ์—๊ฒŒ ์„œ๋น„์Šค ํ™”๋ฉด ๊ณต๋ฐฑ ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ์‹ฌ๊ฐํ•œ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์Šคํฌ๋ฅผ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ, ์ƒˆ๋กœ์šด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณ„๋„๋กœ ๊ตฌ์ถ•ํ•œ ๋’ค ์ ์ง„์ ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” Blue-Green ๋ฐฐํฌ ๋ชจ๋ธ์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ต์ฒดํ•˜๋Š” ์ ‘๊ทผ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค:
    • ๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌด์ค‘๋‹จ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•  ๊ฒƒ
    • Blue-Green ๋ฐฐํฌ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์ „ํ™˜ํ•˜๋ฉฐ, ์ถ”ํ›„ ๋™์ผํ•œ ์ž‘์—…์„ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ธํ”„๋ผ ์ƒ์„ฑ ์ ˆ์ฐจ๋ฅผ ์ž๋™ํ™”ํ•  ๊ฒƒ

์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ

Blue-Green ํ™˜๊ฒฝ๊ณผ ํŠธ๋ž˜ํ”ฝ ์ „ํ™˜

  • Blue-Green ํด๋Ÿฌ์Šคํ„ฐ ์ „๋žต ์„ค๊ณ„ ๋ฐ ํŠธ๋ž˜ํ”ฝ ์ „ํ™˜
    • ๊ธฐ์กด ์šด์˜ ์ค‘์ธ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ง์ ‘ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š๊ณ , ์‹ ๊ทœ Kubernetes ๋ฒ„์ „์˜ EKS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณ„๋„๋กœ ์ƒ์„ฑํ•˜์—ฌ blux-eks-cluster-prod-blue, blux-eks-cluster-prod-green ํ˜•์‹์œผ๋กœ ๋ณ‘๋ ฌ ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์„œ๋น„์Šค ์ „ํ™˜์€ Route 53์˜ Weighted Routing ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ์ ์ง„์ ์œผ๋กœ ์‹ ๊ทœ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ถ„์‚ฐ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ ํ”„๋กœ๋น„์ €๋‹ ์ž๋™ํ™” ๋ฐ ์Šคํฌ๋ฆฝํŠธํ™”: ํ–ฅํ›„ ๋ฐ˜๋ณต์ ์ธ ์—…๊ทธ๋ ˆ์ด๋“œ๋‚˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž‘์—…์— ๋Œ€๋น„ํ•˜์—ฌ, ์ž์ฒด์ ์œผ๋กœ ์ •์˜ํ•œ Layer 0๋ถ€ํ„ฐ Layer 3๊นŒ์ง€ ์ „์ฒด ์ธํ”„๋ผ ์ƒ์„ฑ ๋ฐ ์„ค์ •์„ Shell Script๋กœ ์ž๋™ํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋™์ผํ•œ ๊ตฌ์„ฑ์„ ์‹ ์†ํ•˜๊ฒŒ ์žฌํ˜„ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜์˜€์œผ๋ฉฐ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(prod, dev)๊ณผ ๋ฐฐํฌ ๋ชจ๋ธ(blue, green)๋งŒ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜๋ฉด ์‹ ๊ทœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋ฐ˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒ€์ฆ ๋ฐ ์•ˆ์ •์„ฑ ํ™•์ธ: ํด๋Ÿฌ์Šคํ„ฐ ์ „ํ™˜ ๋„์ค‘์—๋Š” Prometheus, Loki, Grafana๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ๊ด€์ธก ๋ฐ์ดํ„ฐ์™€ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ง€ํ‘œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ƒํƒœ๋ฅผ ๋ฉด๋ฐ€ํžˆ ๋ชจ๋‹ˆํ„ฐ๋งํ–ˆ์Šต๋‹ˆ๋‹ค:
    • ์ฃผ์š” API์˜ HTTP ์‘๋‹ต ์ฝ”๋“œ ๋ถ„ํฌ (2XX, 4XX, 5XX ๋น„์œจ)
    • API ๋ณ„ ์‘๋‹ต ์†๋„ ๋ฐ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„
    • ์„œ๋น„์Šค๋ณ„ ์š”์ฒญ ์„ฑ๊ณต๋ฅ  ๋ฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์ถ”์ด
  • ALB Access Logs (S3) ๋ถ„์„์„ ํ†ตํ•œ ๋ฌด์ค‘๋‹จ ์—ฌ๋ถ€ ํ™•์ธ: Route 53 ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ ์ดํ›„, ALB ๋กœ๊ทธ์—์„œ ๋Œ€์ƒ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฐฑ์—”๋“œ IP ๋ถ„ํฌ์™€ ์‘๋‹ต ์ƒํƒœ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์š”์ฒญ์ด ์ •์ƒ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ผ์šฐํŒ…๋˜์—ˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฅ˜ ์—†์ด ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€๋ฅผ ๊ฒ€์ฆํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์œ„ ์ง€ํ‘œ๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘ ๋ฌธ์ œ ์œ ๋ฌด๋ฅผ ํƒ์ง€ํ•˜๊ณ , ์ด์ƒ ์ง•ํ›„ ๋ฐœ์ƒ ์‹œ ์ฆ‰์‹œ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค€๋น„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

  • ํด๋Ÿฌ์Šคํ„ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋‹ค์šดํƒ€์ž„ ์—†์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ํŠธ๋ž˜ํ”ฝ ์ „ํ™˜ ์ค‘์—๋„ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋ณ„๋‹ค๋ฅธ ์ด์Šˆ ์—†์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋งˆ๋ฌด๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐ–์ถค์œผ๋กœ์จ, DevOps ๊ด€์ ์—์„œ ํ–ฅํ›„ ์œ ์‚ฌํ•œ ์ž‘์—…์„ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•  ๋•Œ์˜ ํšจ์œจ์„ฑ์„ ํฌ๊ฒŒ ๊ฐœ์„ ํ•˜์˜€๊ณ , ํ•„์š” ์‹œ ๋กค๋ฐฑ ๋˜ํ•œ ์šฉ์ดํ•œ ๊ตฌ์กฐ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

๐Ÿงฉ ๋ชจ๋ฒ” SaaS ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์— ๋”ฐ๋ฅธ EKS ํด๋Ÿฌ์Šคํ„ฐ ๊ณ ๋„ํ™”

2023๋…„ 6์›” - 2023๋…„ 10์›”

๋ฐฐ๊ฒฝ

  • ๋ธ”๋Ÿญ์Šค์˜ ๊ณ ๊ฐ์‚ฌ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ, ์˜จ๋ณด๋”ฉ ๊ณผ์ •์— ๋‹ค์ˆ˜์˜ ์ธ์  ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ํˆฌ์ž…๋˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. PO, SW ๋ฐ ML ์—”์ง€๋‹ˆ์–ด ๋“ฑ ์—ฌ๋Ÿฌ ์ธ๋ ฅ์ด ์ˆ˜๋™์œผ๋กœ ๊ฐœ์ž…ํ•ด์•ผ ํ–ˆ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ํœด๋จผ ์—๋Ÿฌ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ๋„ ์กด์žฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ํ…Œ๋„ŒํŠธ์˜ ๊ทœ๋ชจ์™€ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋‹ค์–‘ํ•ด์ง€๋ฉด์„œ, ์†Œํ˜• ํ…Œ๋„ŒํŠธ๋Š” ๋น„์šฉ ํšจ์œจ์„ฑ์„, ๋Œ€ํ˜• ํ…Œ๋„ŒํŠธ๋Š” ์ „์šฉ ์ž์› ๋ฐ ๊ฐœ๋ณ„ํ™”๋œ ๊ด€๋ฆฌ(์˜ˆ: ๋‹จ๋… ์—”๋“œํฌ์ธํŠธ)๋ฅผ ์š”๊ตฌํ•˜๋Š” ์‚ฌ๋ก€๊ฐ€ ๋Š˜์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ๋‹จ์ผ ๊ตฌ์กฐ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋‹ค์–‘ํ•œ ์ˆ˜์š”๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ˆ˜์šฉํ•˜๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.
  • ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค:
    • ์‹ ๊ทœ ํ…Œ๋„ŒํŠธ๊ฐ€ 3์‹œ๊ฐ„ ์ด๋‚ด์— ์ž๋™์œผ๋กœ ์˜จ๋ณด๋”ฉ๋  ์ˆ˜ ์žˆ๋„๋ก ์ž๋™ํ™”๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ๊ฒƒ
    • ํ…Œ๋„ŒํŠธ์˜ ๊ทœ๋ชจ ๋ฐ ํ‹ฐ์–ด์— ๋”ฐ๋ผ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ฐฐํฌ ๋ชจ๋ธ์„ ํ™œ์šฉํ•  ๊ฒƒ
    • ํ‹ฐ์–ด๋ณ„ ์ž์› ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์„ค์ •ํ•˜๊ณ , ์ƒ์œ„ ํ‹ฐ์–ด ํ…Œ๋„ŒํŠธ์—๊ฒŒ๋Š” ์ „์šฉ ๋…ธ๋“œ ์ž์›์„ ์ œ๊ณตํ•  ๊ฒƒ

์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ

์˜จ๋ณด๋”ฉ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ

  • ์˜จ๋ณด๋”ฉ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•: ํ…Œ๋„ŒํŠธ ์˜จ๋ณด๋”ฉ ๊ณผ์ •์˜ ์ˆ˜์ž‘์—…์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด Jenkins ๊ธฐ๋ฐ˜์˜ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ธ”๋Ÿญ์Šค ๋‚ด๋ถ€ ์ฝ˜์†”์—์„œ โ€˜Add new tenantโ€™ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ Jenkins Job์ด ํŠธ๋ฆฌ๊ฑฐ๋˜์–ด 1) ์‹ ๊ทœ ํ…Œ๋„ŒํŠธ ์ •๋ณด๋ฅผ RDS์— ๊ธฐ๋กํ•˜๊ณ , 2) ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ์ถ”์ฒœ ๋ชจ๋ธ ํ•™์Šต์„ ๋ช…๋ นํ•˜๋ฉฐ, 3) ํ…Œ๋„ŒํŠธ์˜ ํ™˜๊ฒฝ์— ๋งž๋Š” Kubernetes ๋ฆฌ์†Œ์Šค ์ •์˜ ํŒŒ์ผ์„ ํฌํ•จํ•œ GitHub repository ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ Push ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ Argo CD๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•˜์—ฌ, ํ•ด๋‹น ํ…Œ๋„ŒํŠธ๋ฅผ ์œ„ํ•œ Collector/ML/Recommender API ๋“ฑ์˜ ์„œ๋น„์Šค๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋˜๋„๋ก ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํ‹ฐ์–ด์— ๋”ฐ๋ฅธ Pool ๋ฐ Silo ๋ฐฐํฌ ๋ชจ๋ธ

  • ๋‹ค์ค‘ ํ‹ฐ์–ด ๊ตฌ์กฐ ์„ค๊ณ„ ๋ฐ ๋ฐฐํฌ ์ „๋žต ์ ์šฉ: ํ…Œ๋„ŒํŠธ ๊ทœ๋ชจ ๋ฐ ์š”๊ตฌ์‚ฌํ•ญ์˜ ๋‹ค์–‘์„ฑ์„ ๊ณ ๋ คํ•ด, Standard/Premium/Enterprise ์„ธ ๊ฐ€์ง€ ์„œ๋น„์Šค ํ‹ฐ์–ด๋ฅผ ์ •์˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • Standard ํ‹ฐ์–ด๋Š” Pool ๋ชจ๋ธ๋กœ, ๊ฐ ํ…Œ๋„ŒํŠธ๊ฐ€ ์ „์šฉ์˜ Recommender API ๋ฐ ํ•™์Šต๋œ ์ถ”์ฒœ ๋ชจ๋ธ์€ ๋”ฐ๋กœ ๋ณด์œ ํ•˜์ง€๋งŒ, Collector ๋ฐ ML API๋Š” ๊ณต์šฉ ์ธํ”„๋ผ์™€ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ „์šฉ ๋…ธ๋“œ ์—†์ด ๊ณต์œ  NodePool์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ, ์‚ฌ์šฉ๋Ÿ‰์ด ๋น„๊ต์  ์ ์€ ํ…Œ๋„ŒํŠธ์—๊ฒŒ ์ ํ•ฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.
    • Premium ๋ฐ Enterprise ํ‹ฐ์–ด๋Š” Silo ๋ชจ๋ธ๋กœ, Recommender API๋Š” ๋ฌผ๋ก  Collector ๋ฐ ML API๊นŒ์ง€ ๊ฐ๊ธฐ ๋ณ„๋„์˜ ์—”๋“œํฌ์ธํŠธ์™€ ์ธํ”„๋ผ ๋ฆฌ์†Œ์Šค๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ฐ ํ…Œ๋„ŒํŠธ๋Š” ์ „์šฉ NodePool์—์„œ ์‹คํ–‰๋˜์–ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ๋„ ์ž์›์ด ๊ฒฉ๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ…Œ๋„ŒํŠธ๋ณ„ ๋ฐ์ดํ„ฐ ๋ฐ ํŠธ๋ž˜ํ”ฝ์„ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด, ๋†’์€ ๋ณด์•ˆ ์š”๊ตฌ ์‚ฌํ•ญ์ด๋‚˜ SLA๊ฐ€ ํ•„์š”ํ•œ ํ…Œ๋„ŒํŠธ์—๊ฒŒ ์•ˆ์ •์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๋™์‹œ์— ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ž์› ๊ฒฉ๋ฆฌ ๊ตฌ์กฐ ์ˆ˜๋ฆฝ
    • ๋ชจ๋“  ํ…Œ๋„ŒํŠธ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ๋˜๋ฉฐ, ๊ฐ ์›Œํฌ๋กœ๋“œ์—๋Š” IRSA(IAM Roles for Service Accounts)๋ฅผ ์ ์šฉํ•ด AWS ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ๊ถŒํ•œ๊นŒ์ง€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฒฉ๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ํŠนํžˆ ์ƒ์œ„ ํ‹ฐ์–ด์˜ ๊ฒฝ์šฐ, ์ „์šฉ NodePool์„ ๊ตฌ์„ฑํ•˜์—ฌ ํ•ด๋‹น ํ…Œ๋„ŒํŠธ์˜ ์›Œํฌ๋กœ๋“œ๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋…๋ฆฝ๋œ EC2 ๋…ธ๋“œ์—์„œ๋งŒ ๋™์ž‘ํ•˜๋„๋ก ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณ ํŠธ๋ž˜ํ”ฝ ํ…Œ๋„ŒํŠธ๊ฐ€ ๋‹ค๋ฅธ ํ…Œ๋„ŒํŠธ์—๊ฒŒ ์ž์› ์˜ํ–ฅ์„ ์ฃผ๋Š” Noisy Neighbor ํ˜„์ƒ์„ ๊ทผ๋ณธ์ ์œผ๋กœ ์ฐจ๋‹จํ•˜๊ณ , ๊ณ ๊ฐ€์šฉ์„ฑ๊ณผ ์„ฑ๋Šฅ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

  • ๊ธฐ์กด ์ˆ˜์ž‘์—… ๊ธฐ๋ฐ˜ ์˜จ๋ณด๋”ฉ ๊ณผ์ •์ด ์•ฝ 2~3์‹œ๊ฐ„ ๋‚ด์™ธ๋กœ ๋‹จ์ถ•๋˜์—ˆ์œผ๋ฉฐ, ๋ฐ˜๋ณต ์ž‘์—…์— ํˆฌ์ž…๋˜๋˜ ์ธ์  ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€ํญ ์ ˆ๊ฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์˜จ๋ณด๋”ฉ ์•ˆ๋‚ด, SDK ์‚ฝ์ž…, ๋ชจ๋ธ ํ•™์Šต, ์ž์› ์„ค์ • ๋“ฑ์˜ ๊ณผ์ •์ด ์ƒ๋‹น ๋ถ€๋ถ„ ์ž๋™ํ™”๋˜๋ฉด์„œ ์šด์˜ ํšจ์œจ์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ๋„ŒํŠธ์˜ ๋‹ค์–‘ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ํ‹ฐ์–ด๋ณ„๋กœ ์œ ์—ฐํ•˜๊ฒŒ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋Š” SaaS ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ, ๋งž์ถคํ˜• ๊ตฌ๋… ๋ชจ๋ธ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒ์œ„ ํ‹ฐ์–ด ํ…Œ๋„ŒํŠธ์—๊ฒŒ๋Š” ์ „์šฉ ๋…ธ๋“œ๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ๋ณด์žฅ๊ณผ ๋‹จ๋… ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•œ ๋ณด์•ˆ ์šฐ๋ ค ํ•ด์†Œ๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ, ๊ณ ๊ฐ ๋งŒ์กฑ๋„๋ฅผ ๋†’์ด๋Š” ๋ฐ ๊ธฐ์—ฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” EKS ์ƒ์—์„œ AWS SaaS ์•„ํ‚คํ…์ฒ˜์˜ Best Practice๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐ˜์˜ํ•œ ์‚ฌ๋ก€๋กœ ์ธ์ •๋ฐ›์•„, AWS Korea ๊ณต์‹ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ์— ํ•ด๋‹น ๋‚ด์šฉ์„ ๊ฒŒ์žฌํ•˜์˜€์œผ๋ฉฐ, AWS Unicorn Day 2024 ํ–‰์‚ฌ์—์„œ ๋™์ผํ•œ ์ฃผ์ œ๋กœ ๋ฐœํ‘œ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

๐Ÿ—๏ธ Production-Grade์˜ EKS ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์ถ• ๋ฐ ECS to EKS ๋ฌด์ค‘๋‹จ Migration

2023๋…„ 1์›” - 2023๋…„ 5์›”

๋ฐฐ๊ฒฝ

  • ๋ธ”๋Ÿญ์Šค๋Š” ์ดˆ๊ธฐ์—๋Š” ๊ณ ๊ฐ์‚ฌ๋ณ„๋กœ Amazon ECS ๊ธฐ๋ฐ˜์˜ ๊ฐœ๋ณ„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ๊ณ ๊ฐ์‚ฌ์˜ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด์„œ ๋น„์šฉ, ์šด์˜ ๋ณต์žก๋„, ํ™•์žฅ์„ฑ ์ธก๋ฉด์—์„œ ํ•œ๊ณ„๋ฅผ ์ฒด๊ฐํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ECS๋Š” vCPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์กฐํ•ฉ์ด ๊ณ ์ •๋˜์–ด ์žˆ์–ด ์ž์› ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์› ๊ณ , ๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์–ด๋ ต๊ณ , AWS์— ์ข…์†์ ์ธ ๊ตฌ์กฐ์˜€๊ธฐ ๋•Œ๋ฌธ์— ์žฅ๊ธฐ์ ์ธ ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์— ๋ฐ˜ํ•ด, Amazon EKS ๊ธฐ๋ฐ˜ Kubernetes๋Š” ์ž์œ ๋กœ์šด ์ž์› ์„ค์ •, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐํ…Œ๋„Œ์‹œ, Rolling/Canary/Blue-Green ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฐํฌ ์ „๋žต, ๊ทธ๋ฆฌ๊ณ  ๊ด‘๋ฒ”์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์ƒํƒœ๊ณ„ ๋“ฑ์„ ํ†ตํ•ด ๋†’์€ ์œ ์—ฐ์„ฑ๊ณผ ์ž๋™ํ™”๋œ ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
  • ๋‚ด๋ถ€์ ์œผ๋กœ๋„ โ€œ๊ณ ๊ฐ์‚ฌ๊ฐ€ ๋” ๋Š˜์–ด๋‚˜๊ธฐ ์ „์— Kubernetes๋กœ ์ „ํ™˜ํ•˜์žโ€๋Š” ์˜๊ฒฌ์ด ๋ชจ์˜€๊ณ , EKS๊ฐ€ ์žฅ๊ธฐ์ ์œผ๋กœ ๋” ์œ ๋ฆฌํ•œ ์„ ํƒ์ด๋ผ๋Š” ํŒ๋‹จ ์•„๋ž˜, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธ”๋Ÿญ์Šค์˜ ์œ ์ผํ•œ MLOps ์—”์ง€๋‹ˆ์–ด๋กœ์„œ, EKS ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์Šคํฌ๋ž˜์น˜์—์„œ๋ถ€ํ„ฐ Production ์ˆ˜์ค€์œผ๋กœ ๊ตฌ์ถ•ํ•˜๊ณ , ๋ชจ๋“  ECS ์›Œํฌ๋กœ๋“œ๋ฅผ ๋ฌด์ค‘๋‹จ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ์ „ ๊ณผ์ •์„ ํ˜ผ์ž์„œ ๋‹ด๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค:
    • IaC ๋ฐ ์žฌํ˜„ ๊ฐ€๋Šฅํ•˜๊ณ  ์ผ๊ด€๋œ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ
    • ์•ˆ์ •์ ์ธ ์˜คํ† ์Šค์ผ€์ผ๋ง, ๋กœ๊น…/๋ชจ๋‹ˆํ„ฐ๋ง, ๋ณด์•ˆ ๊ด€๋ฆฌ, CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์ง€์›
    • Airflow, MLflow ๊ธฐ๋ฐ˜ ML ํŒŒ์ดํ”„๋ผ์ธ ์ง€์›

์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ

์•„ํ‚คํ…์ฒ˜์˜ 4๊ฐœ์˜ Layers

  • ์ธํ”„๋ผ ์„ค๊ณ„ ๋ฐ ์šด์˜ ์ž๋™ํ™”: ์ „์ฒด ์ธํ”„๋ผ๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ž์ฒด์ ์œผ๋กœ ์ •์˜ํ•œ Layer 0๋ถ€ํ„ฐ Layer 3๊นŒ์ง€ ์ด 4๋‹จ๊ณ„๋กœ ๊ณ„์ธตํ™”ํ•˜์—ฌ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ณ„์ธต์€ ์—ญํ• ๊ณผ ํด๋ผ์šฐ๋“œ ์˜์กด์„ฑ์— ๋”ฐ๋ผ ๋ถ„๋ฆฌํ•˜์˜€์œผ๋ฉฐ, ๋ชจ๋“  ๋ฐฐํฌ๋Š” Terraform, Helm, Argo CD๋ฅผ ํ™œ์šฉํ•ด GitOps ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ด 4๋‹จ๊ณ„์˜ Layers
      • Layer 0: Terraform ์ƒํƒœ ์ €์žฅ์†Œ๋ฅผ ์œ„ํ•œ S3, DynamoDB (now deprecated) ๋“ฑ ๋ฐฑ์—”๋“œ ์ธํ”„๋ผ
      • Layer 1: ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ ์‹œ์Šคํ…œ ์ธํ”„๋ผ (EKS, EC2 ๋…ธ๋“œ ๊ทธ๋ฃน, IAM, KMS ๋“ฑ)
      • Layer 2: MLOps ๋ฐ GitOps ์Šคํƒ ๊ตฌ์„ฑ
      • Layer 3: ์‹ค์ œ ๋ธ”๋Ÿญ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
    • Layer 0๊ณผ 1์€ AWS์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์šฐ๋“œ ์ข…์†์ ์ธ ๊ณ„์ธต์ด๋ฉฐ, Layer 2์™€ 3์€ ์ƒ๋Œ€์ ์œผ๋กœ ํด๋ผ์šฐ๋“œ ๋…๋ฆฝ์ ์ธ ๊ตฌ์„ฑ์œผ๋กœ์„œ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ๋„ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์žฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ, ํ™•์žฅ์„ฑ, ์•ˆ์ •์„ฑ, ์žฌํ˜„ ๊ฐ€๋Šฅ์„ฑ์„ ๋ชจ๋‘ ๊ณ ๋ คํ•œ Production-Grade ์ธํ”„๋ผ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

EKS ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜

  • MLOps ์Šคํƒ ๊ตฌ์„ฑ
    • ์˜คํ† ์Šค์ผ€์ผ๋ง ์ „๋žต์œผ๋กœ HPA (Horizontal Pod Autoscaler)์™€ Karpenter๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์›Œํฌ๋กœ๋“œ ๋ ˆ๋ฒจ๊ณผ ์ธํ”„๋ผ ๋ ˆ๋ฒจ ๋ชจ๋‘์—์„œ ์˜คํ† ์Šค์ผ€์ผ๋ง์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์›Œํฌ๋กœ๋“œ๋Š” NodePools(๋‹น์‹œ์—๋Š” Provisioners)๋กœ ์šด์˜ํ•˜์—ฌ ๋น„์šฉ์„ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑ ํ™•๋ณด๋ฅผ ์œ„ํ•ด Prometheus์™€ Grafana๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฉ”ํŠธ๋ฆญ ๊ธฐ๋ฐ˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์ฒด๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€๊ณ , EFK ์Šคํƒ(Elasticsearch, Fluentd, Kibana)์„ ํ†ตํ•ด ๋กœ๊น… ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ดํ›„ ์šด์˜ ํšจ์œจ์„ฑ๊ณผ ๋น„์šฉ์„ ๊ณ ๋ คํ•˜์—ฌ, ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์ด ๋” ์ ์€ PLG ์Šคํƒ(Promtail, Loki, Grafana)์œผ๋กœ ์ „ํ™˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • Airflow์™€ MLflow๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•˜๊ณ , Airflow DAG์€ KubernetesPodOperator๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ์‹œ์ ์—๋งŒ Worker ๋…ธ๋“œ๋ฅผ ๋„์šฐ๊ณ  ์ข…๋ฃŒํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ NodePools๊ณผ Taints ๋ฐ Tolerations๋ฅผ ํ™œ์šฉํ•ด ํ•ด๋‹น ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” Worker ๋…ธ๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑ/์‚ญ์ œํ•˜์—ฌ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ธ”๋Ÿญ์Šค์˜ CI/CD ํŒŒ์ดํ”„๋ผ์ธ

  • CI/CD ๋ฐ GitOps ๊ธฐ๋ฐ˜ ์šด์˜: GitHub repository์™€ Argo CD๋ฅผ ์—ฐ๋™ํ•˜์—ฌ GitOps ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐฐํฌ๋ฅผ GitHub Actions๊ณผ ์‚ฌ๋žŒ๋“ค์ด ์˜ฌ๋ฆฌ๋Š” PR ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ฆฌํ•˜์˜€์œผ๋ฉฐ, ์Šน์ธ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ Argo CD๊ฐ€ ์ž๋™์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ˜์˜ํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ปค์Šคํ…€ ์ž‘์—…์€ Jenkins์™€ ์—ฐ๋™ํ•ด ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์›Œํฌ๋กœ๋“œ ์„ค๊ณ„ ๋ฐ ๋ณด์•ˆ ๊ฐ•ํ™”: ๊ธฐ์กด ECS ์„œ๋น„์Šค๋“ค์„ Kubernetes ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ณ , ์™ธ๋ถ€ ๋…ธ์ถœ์ด ๋ถˆํ•„์š”ํ•œ ์›Œํฌ๋กœ๋“œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  PodDisruptionBudget์™€ TopologySpreadConstraints๋ฅผ ์„ค์ •ํ•ด ์žฅ์•  ๋ฐœ์ƒ ์‹œ์—๋„ ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณด์•ˆ์„ ์œ„ํ•ด Kubernetes Secrets๋Š” SealedSecrets๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋ฌด์ค‘๋‹จ ํŠธ๋ž˜ํ”ฝ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜: Route 53์˜ Weighted Routing ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด, ECS to EKS๋กœ์˜ ํŠธ๋ž˜ํ”ฝ ์ „ํ™˜์„ ์ ์ง„์ ์œผ๋กœ (0:100 โ†’ 100:0) ์ˆ˜ ์ผ์— ๊ฑธ์ณ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€์†์ ์ธ ๋ฉ”ํŠธ๋ฆญ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ†ตํ•ด ์žฅ์•  ์—†์ด ์ „ํ™˜์„ ๋งˆ๋ฌด๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

  • ์Šคํฌ๋ž˜์น˜์—์„œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•œ EKS ํด๋Ÿฌ์Šคํ„ฐ๋Š” IaC ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žฌํ˜„์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๊ฐ–์ถ˜ ํ”„๋กœ๋•์…˜ ์ธํ”„๋ผ ํ™˜๊ฒฝ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์›Œํฌ๋กœ๋“œ ๋ฐ ์ธํ”„๋ผ ์ˆ˜์ค€์˜ ์˜คํ† ์Šค์ผ€์ผ๋ง ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์•ˆ์ •์ ์ธ ์ž๋™ํ™” ์šด์˜ ํ™˜๊ฒฝ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ๊น…/๋ชจ๋‹ˆํ„ฐ๋ง, GitOps ๊ธฐ๋ฐ˜์˜ ๋ฐฐํฌ ์ฒด๊ณ„, ๋ณด์•ˆ ๊ตฌ์„ฑ, ML ์›Œํฌํ”Œ๋กœ์šฐ๊นŒ์ง€ ํฌํ•จํ•œ MLOps ์Šคํƒ์„ ์™„์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ์กด ECS ๊ตฌ์กฐ ๋Œ€๋น„ ์•ฝ 25%์˜ ์ธํ”„๋ผ ๋น„์šฉ ์ ˆ๊ฐ์„ ๋‹ฌ์„ฑํ•˜์˜€๊ณ , ์ธํ”„๋ผ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฝ”๋“œํ™”ํ•จ์œผ๋กœ์จ ๊ด€๋ฆฌ ๋ณต์žก๋„๋ฅผ ํฌ๊ฒŒ ๋‚ฎ์ถ”๊ณ  ํˆฌ๋ช…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ECS ์›Œํฌ๋กœ๋“œ๋ฅผ EKS๋กœ ๋ฌด์ค‘๋‹จ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์—ฌ ์ „ํ™˜์— ๋”ฐ๋ฅธ ์‚ฌ์šฉ์ž ์˜ํ–ฅ ์—†์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ „ํ™˜์„ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ํด๋Ÿฌ์Šคํ„ฐ๋Š” ํ˜„์žฌ๊นŒ์ง€๋„ ์ฃผ์š” ์„œ๋น„์Šค๋ฅผ ํฌ๋ฆฌํ‹ฐ์ปฌํ•œ ์žฅ์•  ์—†์ด 2๋…„ ๋„˜๊ฒŒ ์•ˆ์ •์ ์œผ๋กœ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

๐Ÿ—ฃ๏ธ Publications & Talks

๐ŸŽค Talks

โœ๏ธ Technical Writings

๐Ÿ“š Academic Publications

๐Ÿ› ๏ธ Skills & Languages

๐Ÿ”ง Technical Skills

  • ํด๋ผ์šฐ๋“œ ๋ฐ DevOps
    • ์ธํ”„๋ผ: AWS, Kubernetes, Helm, Terraform
    • ์˜คํ† ์Šค์ผ€์ผ๋ง: HPA, Karpenter
    • ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง: Prometheus, Loki, Grafana, Elasticsearch, Fluentd, Kibana
    • CI/CD ๋ฐ GitOps: Jenkins, GitHub Actions, Argo CD
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด: Python, Java, C++, TypeScript
  • ์šด์˜ ํ™˜๊ฒฝ ๋ฐ ๋„๊ตฌ: Linux, Git, Docker

๐Ÿค Soft Skills

  • ๊ธ€์“ฐ๊ธฐ๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ œ๊ฐ€ ํ–ˆ๋˜ ์ž‘์—…์„ ์‰ฌ์šด ๋ง๋กœ ์ •๋ฆฌํ•˜์—ฌ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ฒจ๋†“๋Š” ๊ฒƒ์„ ์ž˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์™„์„ฑ๋„ ๋†’์€ ๋ฐœํ‘œ ์ž๋ฃŒ๋ฅผ ๋งŒ๋“ค๊ณ  ์—ฌ๋Ÿฌ ์ฒญ์ค‘ ์•ž์—์„œ ๋ฐœํ‘œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒ€์›๋“ค๊ณผ ์˜์‚ฌ์†Œํ†ตํ•  ๋•Œ ์ตœ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์‰ฝ๊ณ  ์˜คํ•ด๊ฐ€ ์—†๋Š” ํ‘œํ˜„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ •ํ•ด์ง„ ์ฃผ์ธ์ด ์—†๋Š” ์ผ์„ ๋งˆ๋‹คํ•˜์ง€ ์•Š๊ณ  ๋จผ์ € ์ฑ™๊ธฐ๋ฉฐ, ํŒ€์˜ ์šด์˜๊ณผ ๋ถ„์œ„๊ธฐ์— ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ์ฃผ๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒ Languages

  • ํ•œ๊ตญ์–ด: ๋ชจ๊ตญ์–ด
  • ์˜์–ด: ๋Šฅ์ˆ™ํ•จ
    • TOEFL 114์  / 120์  (2018๋…„ 5์›” ์ทจ๋“)

๐Ÿ“‡ Contact Information

Popular repositories Loading

  1. dgx-a100-server-allocation dgx-a100-server-allocation Public

    3

  2. meta-learning-lstm meta-learning-lstm Public

    Forked from twitter-research/meta-learning-lstm

    This repo contains the source code accompanying a scientific paper with the same name.

    Lua

  3. CPSim_Linux_Generalized CPSim_Linux_Generalized Public

    Forked from rubis-lab/CPSim_Linux_Generalized

    Java

  4. 2020-fall-computer-modeling 2020-fall-computer-modeling Public

    CSE Elective for Major

    C

  5. cs344 cs344 Public

    Forked from udacity/cs344

    Introduction to Parallel Programming class code

    Cuda

  6. fast-style-transfer fast-style-transfer Public

    Forked from lengstrom/fast-style-transfer

    TensorFlow CNN for fast style transfer โšก๐Ÿ–ฅ๐ŸŽจ๐Ÿ–ผ

    Python