전체 · 344

  1. 2026
  2. 7월
  3. 07.26김미정 - 더 (More)
  4. 07.22연못가 분수
  5. 07.21249.
  6. 07.20어디서나
  7. 07.1934만 원
  8. 07.18아무 키나 눌러
  9. 07.17EVE
  10. 07.16로열블루
  11. 07.15꺼거
  12. 07.14대필 작가
  13. 07.13반도체 타임머신
  14. 07.12폭염주의보
  15. 07.11Viva! Riviera!
  16. 07.10Z890
  17. 07.09플라잉드래곤
  18. 07.08비틀즈
  19. 07.07티비 사야것다
  20. 07.06love you
  21. 07.05미역국과 수국
  22. 07.04ver9.2
  23. 07.03대파빵
  24. 07.02100와트
  25. 07.01반환점
  26. 6월
  27. 06.30법카보다 집
  28. 06.29선풍기
  29. 06.28첫 매미 울음
  30. 06.27흔들리는 창
  31. 06.26매직 아워
  32. 06.25암흑기
  33. 06.24쿠분투
  34. 06.23뷔슈 드 노엘
  35. 06.22김치볶음밥
  36. 06.21그림자
  37. 06.200x800703EE
  38. 06.19과일 산도
  39. 06.1864개
  40. 06.17하교
  41. 06.16JT Music - Join Us For A Bite
  42. 06.16키 컬러
  43. 06.15aespa - 'Til We Die
  44. 06.15MEOVV - Favorite Song
  45. 06.15통학버스
  46. 06.14일단 보류
  47. 06.13
  48. 06.12티끌
  49. 06.11아주아주아주 가볍게
  50. 06.10무지개
  51. 06.09양산
  52. 06.083285%
  53. 06.07얼굴 쿠키
  54. 06.06설거지
  55. 06.05생크림 케이크
  56. 06.042인승 로켓
  57. 06.03당도 11
  58. 06.02함부르크
  59. 06.01개망초
  60. 5월
  61. 05.31김치찜
  62. 05.306번 출구
  63. 05.29날도 좋고
  64. 05.28스마트 드링크
  65. 05.2713시 11분 원주발 청량리행
  66. 05.26파스타
  67. 05.25You've Got a Friend in Me
  68. 05.24통파인애플
  69. 05.231분 지각
  70. 05.22FORZA HORIZON
  71. 05.21고기초밥
  72. 05.20공용 우산
  73. 05.19달나라 탐험
  74. 05.18오 분이면 침대
  75. 05.17세탁 오천원 건조 오천원
  76. 05.16검은색 삼겹살
  77. 05.15달 로켓
  78. 05.14식은 피자
  79. 05.13101
  80. 05.12백 일
  81. 05.111~100
  82. 05.10라즈베리
  83. 05.09카네이션
  84. 05.08프라이팬 가득
  85. 05.07명함 한 장
  86. 05.06강아지 케이크
  87. 05.05러브크루즈
  88. 05.04파란 우주인
  89. 05.03밑 빠진 병
  90. 05.02타임머신
  91. 05.01타임머신
  92. 4월
  93. 04.30정자동
  94. 04.29호르무즈 해협
  95. 04.28웰던
  96. 04.27DOUBLE DRIP
  97. 04.26해가 길다
  98. 04.25노란 자전거
  99. 04.24필요한 것만
  100. 04.23파란 수건
  101. 04.22첫 세탁이 중요해요
  102. 04.21ITX-마음
  103. 04.20땅콩버터
  104. 04.19REBEL HEART
  105. 1월
  106. 01.20e ∈ F
  107. 01.20기술개발 진행상황 공유 2
  108. 01.20기술개발 진행상황 공유 1
  109. 01.20기술개발 진행상황 공유 3
  110. 01.16『실패를 통과하는 일』
  111. 01.15항저우
  112. 2025
  113. 12월
  114. 12.12Kittyy & The Class - I'm Not Remarkable
  115. 10월
  116. 10.26『싯다르타』
  117. 10.24어제까지의 이야기
  118. 10.24The killers - Shot At the night
  119. 10.20『학문의 즐거움』
  120. 10.12심통봇 - GHOSTagram
  121. 10.09돈 벌기
  122. 9월
  123. 09.13My Chemical Romance - Welcome To The Black Parade
  124. 09.10TUBE - The Season In The Sun
  125. 09.02PERFECT BLUE
  126. 8월
  127. 08.31코코아분말 0.9%
  128. 08.30WHAT THE
  129. 08.30Ado - The World’s Continuation
  130. 08.29문을 닫고 들어오세요
  131. 08.28하우스도르프 공간
  132. 08.27All Time Low
  133. 08.27『생각 좀 하며 세상을 보자』
  134. 08.26세상의 끝을 겨눈대도
  135. 08.25앉은 자리가 꽃자리
  136. 08.246과 7 사이 자연수
  137. 08.23아직 아무 문제도 발견되지 않았습니다
  138. 08.22Adventure
  139. 08.21Adobe Creek
  140. 08.20나의 무가지보(無價之寶)
  141. 08.20HUNTR/X - What It Sounds Like
  142. 08.19T. Rex
  143. 08.18누구를 위하여 종은 울리나
  144. 08.17Sunday Morning
  145. 08.16일상의 안녕
  146. 08.15친애하는 우리의 결함에게
  147. 08.14이것이 있으므로 저것이 있다
  148. 08.14『초신성의 후예』
  149. 08.13나는 나의 길을 간다
  150. 08.13Aimer - 蝶々結び (나비매듭)
  151. 08.12Vanilla Latte
  152. 08.11그것은 하나의 가까움
  153. 08.11Vaundy - 踊り子 (무희)
  154. 08.10정복 불허의 공간에
  155. 08.09쉼 없이 수선하기
  156. 08.08나는 전설이다
  157. 08.07철판치즈버거
  158. 08.07『나는 포기를 모른다』
  159. 08.06난 포기에 소질 있음
  160. 08.05스피또런
  161. 08.04하룻밤 만에
  162. 08.04Myuk - Black Sheep
  163. 08.03세상에 딱 하나뿐인
  164. 08.03『심장보다 높이』
  165. 08.02게으름뱅이를 위한 변명
  166. 08.02Myuk - Gift
  167. 08.02『누가 내 치즈를 옮겼을까?』
  168. 08.01북극 백화점
  169. 7월
  170. 07.31사람은 무엇으로 사는가?
  171. 07.30KRAFTON Yeoksam Office
  172. 07.30Tani Yuuki - W/X/Y
  173. 07.29Slowly flowing day
  174. 07.28What's this?
  175. 07.28Architectural Improvements 4
  176. 07.27Lime Light
  177. 07.26우리가 기다린 미래
  178. 07.25Final approach
  179. 07.25Poster Design Note : Form and Flow
  180. 07.25Poster Design Note : How We Made It
  181. 07.24폭풍의 눈
  182. 07.23IYKYK
  183. 07.22순살치킨 -> 치킨너겟
  184. 07.21TRAIN - TRAIN
  185. 07.21Architectural Improvements 3
  186. 07.21Logo Design Note : The Logic of Flow
  187. 07.20어떤 통찰도 지름길로는 얻을 수 없다
  188. 07.20DeepDive : Many Over Mighty
  189. 07.20JINI - Bad Reputation
  190. 07.19시간이 느리게 가는 건
  191. 07.19Architectural Improvements 2
  192. 07.19DeepDive : GC-Triggered Stop-the-World
  193. 07.18EVEREST
  194. 07.18Architectural Improvements 1
  195. 07.18PhantomFlow : High-performance HTTP request simulator
  196. 07.18Introduction to Project KlickLab
  197. 07.18What is Clickstream data?
  198. 07.17깊은 사고는 더 이상 니즈가 없다
  199. 07.16이기적인 토대 위
  200. 07.15무엇이든, 언제가는
  201. 07.15Official HIGE DANdism - Universe
  202. 07.14경험을 압축하는 알고리즘은 존재하지 않는다 ⏳
  203. 07.14『료의 생각 없는 생각』
  204. 07.13무한한 가능성을 가질 것
  205. 07.12화려한 거짓을 향해
  206. 07.11Kentucky Fried Chicken 🍗
  207. 07.10Tropical Blue 🌊
  208. 07.09처음처럼 내 딛는
  209. 07.08어제와 다른 하늘의 색
  210. 07.08Furui riho - Hello
  211. 07.07누군가의 달이었기를 🌕
  212. 07.06아직 뜯지 않은 마음 🎁
  213. 07.05황금의 오솔길
  214. 07.05noa - A8番出口 (A8번출구)
  215. 07.04우리는 오가는 바람
  216. 07.03Nic dwa razy
  217. 07.02Never basic
  218. 07.02MEOVV - DROP TOP
  219. 07.01입꼬리올림근
  220. 6월
  221. 06.30그럼에도 불구하고
  222. 06.29과잉포장된 자존심
  223. 06.29Steve Winwood – Higher Love
  224. 06.29『어린 왕자』
  225. 06.28E3i3 🛫
  226. 06.27118 ✨
  227. 06.26무한 우주에 순간의 빛일지라도 🌌
  228. 06.26Mercury Rev - Holes
  229. 06.25RUSH
  230. 06.25Cloudybay - 내게로
  231. 06.24그래, 우리는
  232. 06.24『이건 다만 사랑의 습관』
  233. 06.23The wind blowing low
  234. 06.23『생각 망치』
  235. 06.22피어나는 마음의 꽃
  236. 06.21하나는 죽고, 하나는 살았다 💡
  237. 06.21『2025 제16회 젊은작가상 수상작품집』
  238. 06.20초속일초
  239. 06.19씨앗이 가장 고귀한 이유는
  240. 06.18Evening Primrose 🏵️
  241. 06.17마음이 휑뎅그렁할 때
  242. 06.16하나
  243. 06.16Vaundy - しわあわせ (주름 맞추기)
  244. 06.15강철무지개
  245. 06.15Will Ye Go, Lassie Go?
  246. 06.14유람 🚉
  247. 06.1313일의 금요일 ⏰
  248. 06.12백만 스물하나, 백만 스물둘
  249. 06.11경안천 🥩
  250. 06.10달이 아름답네요 🌕
  251. 06.10Yuuri - ドライフラワー (드라이플라워)
  252. 06.10『하늘과 바람과 별과 시』
  253. 06.09Tampermonkey 🖥️
  254. 06.09Hump Back - 拝啓、少年よ (친애하는 소년이여)
  255. 06.09Yuuri - ガリレオは恋をする(갈릴레오는 사랑을 한다)
  256. 06.08미르 ✨
  257. 06.08『인간의 대지』
  258. 06.07나 평생 꿈만을
  259. 06.06아르기닌 🍫
  260. 06.05변속주 🌃
  261. 06.05THE BLUE HEARTS - 情熱の薔薇 (정열의 장미)
  262. 06.05noa - ホットレモン (Hot Lemon)
  263. 06.04Global Running Day 🏃‍
  264. 06.03가장 밝은 별
  265. 06.02천천히 🌃
  266. 06.01circular metal ring 🏀
  267. 5월
  268. 05.31담장과 쪽문 🐋
  269. 05.30투표런 🚀
  270. 05.29출발선 🏃
  271. 05.28Post Traumatic Growth 🌠
  272. 05.27SET 🎂
  273. 05.26READY 📅
  274. 05.25청복 💙
  275. 05.24열복 🫀
  276. 05.23강제 푸시 반성합니다 🔁
  277. 05.22유로파 🍏
  278. 05.21떠오름과 저묾 🌞
  279. 05.20Family Friend Fools
  280. 05.20Aimyon - 裸の心 (벌거벗은 마음)
  281. 05.19Time machine ⏰
  282. 05.18맑은 일요일 🧼
  283. 05.17흐린 토요일 🐢
  284. 05.16PTG 🌧️
  285. 05.15셋이 만드는 하나 🧭
  286. 05.14Lotte+Cafeteria 🍔
  287. 05.13오십삼 🌤️
  288. 05.12일장춘몽 💊
  289. 05.11𝑬𝒗𝒆𝒓𝒍𝒂𝒏𝒅, 𝑬𝒗𝒆𝒓 𝑴𝒊𝒏𝒅 🎡
  290. 05.10五月雨よ 🌧
  291. 05.09Your Journey Starts Here 🪧
  292. 05.08「권의 속도」 📄
  293. 05.07Quiet Air ⏳
  294. 05.06놀자판 하루 🐷
  295. 05.05뭔데이 🎏
  296. 05.04After School 🎒
  297. 05.03나침반이 가리킨 곳 🌌
  298. 05.02짧은 하루 📖
  299. 05.01예고된 악재는 악재가 아니다 🌧️
  300. 05.01『오즈의 마법사』
  301. 4월
  302. 04.30Can More 🍧
  303. 04.29초급반 🏃‍
  304. 04.28감사합니다. 죄송합니다. 🙏
  305. 04.27맥도날드 원정 🍔
  306. 04.26무용(無用)의 쓸모 🛤️
  307. 04.25Sunny Day 🌞
  308. 04.24벚나무 아래에서 🌸
  309. 04.23언제나 이타카를 마음에 두라 🌿
  310. 04.22D-100 🧑‍💻
  311. 04.21수상한 미용실 💇‍♂️
  312. 04.20손으로 컴퓨터를 마주하다🔧
  313. 04.19비가 오면 빨래를 하자 🌧️
  314. 04.18반차😴
  315. 04.17발표, 청소, 러닝🗣️
  316. 04.16반티 발주👕
  317. 04.15첫 달리기🏃‍
  318. 04.14선택과 해석🗳️
  319. 04.14신지훈 - 시가 될 이야기
  320. 04.13Home Sweet Home🏠
  321. 04.12人生
  322. 04.11반티 디자인 공모 & 제출👕
  323. 04.11KiiiKiii - I DO ME
  324. 04.10알고리즘의 끝, C언어의 시작🧭
  325. 04.09하와이안 스테이크🥩
  326. 04.08Long Chat (#🎮)
  327. 04.07Es irrt der Mensch, solang' er strebt.📚
  328. 04.06마무리🛌
  329. 04.05움직이는 물체의 시간은 느리게 간다💤
  330. 04.04하나의 칼날🗡️
  331. 04.033x7=21🧗
  332. 04.02퀴즈 다음날, 시험 전날😴
  333. 04.01April Fools' Day🎭
  334. 3월
  335. 03.311년의 90번째 날🌅
  336. 03.31『카할의 과학하는 삶』
  337. 03.30日曜日은 칠요일 중 첫째 날 이다⏰
  338. 03.29토요일은 주말이 아니다☕
  339. 03.28그래프와 치킨버거🐔
  340. 03.273주차의 시작🗓️
  341. 03.26기초 다지기🔧
  342. 03.25기초 다지기 & 정리해야 할 CS 개념들💡
  343. 03.240.44%
  344. 03.23본가 다녀온 날🏡
  345. 03.22문제 풀이에 집중한 하루 📅
  346. 03.21동료학습🌿
  347. 03.20첫번째 시험📝
  348. 03.19먹다가 끝난 하루🍖
  349. 03.18눈이 쌓이면 버그도 쌓인다❄️
  350. 03.17깃허브, 팀별 면담, 키워드 공부👨‍💻
  351. 03.17RADWIMPS - 正解 (정답)
  352. 03.16외출과 배달🚶🛍️
  353. 03.16ILLIT - Almond Chocolate
  354. 03.16Kep1er - HighLight
  355. 03.15첫 주말🛏️
  356. 03.14컴퓨팅 사고로의 전환🧠
  357. 03.13cookie4u.store🍪 + 1주차 발제📚 + 회식🍺
  358. 03.12디지털 포춘쿠키🍪
  359. 03.11정글 입성🏕
  360. 03.10입소 당일📅

DeepDive : Many Over Mighty

해결법 2: 인스턴스 스케일 아웃 전략 변경


힙 메모리 확장이 RPS 최고치를 높여주긴 했지만
주기적인 멈춤 현상을 해결하지 못했기 때문에…
다른 해결책을 생각해내야 했다.

만약 GC가 유일한 원인이었다면
메모리를 2배 이상 늘렸을 때
‘멈춤’ 현상이 발생하는 간격도 2배 이상으로 길어져야 한다.
하지만 현실은 그렇지 않았다.

여전히 약 20~30초마다 RPS가 바닥을 찍는 현상이 반복되었다.

이 결과는 문제를 단순히 ‘힙 크기’의 문제가 아니라,
‘단일 Node.js 프로세스’의 한계와 Stop-the-World GC가 필연적으로 발생시키는
지연 시간 그 자체에 있다는 결론으로 이어졌다.

아무리 힙을 늘려도 결국 GC는 발생하고
그때마다 모든 요청 처리가 멈춘다는 본질적인 문제는 변하지 않는다.


전략 수정

각 인스턴스가 더 적은 부하를 처리하면서 GC의 영향을 최소화하는 방법,
Stop-the-World GC가 전체 서비스에 미치는 영향을 희석하는 전략이 필요했다.


인스턴스 사양 변경: 더 작게, 더 많이

기존 인프라는 고성능 네트워크와 CPU를 자랑하는
c6in.xlarge (RAM 8 GB) 17개 인스턴스로 구성되어 있었다.

쉽게 말해 좋은(비싼) 인스턴스를 적게 배치하고
각 인스턴스가 많은 요청을 처리하도록 설계된 구조였다.

하지만 Node.js의 단일 스레드 기반 특성과
GC로 인한 Stop-the-World 현상은 이 전략에 치명적인 제약이 되었다.

그래서 다음과 같이 스케일 아웃 전략을 변경했다.


파이프라인에서의 병목 지점: EC2 Auto Scaling

우리가 운영하는 파이프라인은 다음과 같다:

KlickLab SDK → NLB → EC2 (Auto Scaling) → Amazon MSK → AWS Lambda → ClickHouse

이 중 병목 지점은 예상 밖에도 EC2 (Auto Scaling)이었다.
GC가 쌓이는 순간마다 요청이 끊기고, 전체 성능이 급락했다.

Node.js 런타임의 단일 스레드 특성과
GC가 맞물리면서 전체 파이프라인의 발목을 잡았던 것이다.

그래서 EC2 인스턴스를 잘게 쪼갰다.
그 결과, 마침내 RPS 10,000을 넘기는 데 성공했다.


할당량과 예산의 제약

단순히 기술적인 이유만 있었던 것은 아니다.
우리는 다음과 같은 현실적인 인프라 제약에도 부딪히고 있었다:

Service Quotas에 따라 On-Demand 인스턴스의 vCPU 할당량이 96개로 제한되어 있었고,
백엔드 서버나 ClickHouse와 같은 필수 인스턴스에 이미 일부 vCPU가 할당된 상황이었다.

실제로는 사용 가능한 여유 vCPU가 74개뿐이었기 때문에
c6in.xlarge처럼 vCPU를 4개씩 사용하는 인스턴스를 계속 늘리는 것이 불가능했다.

그래서 병렬성을 극대화하기 위해
1개의 Vcpu를 가진 t2.small을 선택하여
인스턴스의 갯수를 최대한으로 늘리기로 했다.

게다가 우리에겐 AWS 크레딧 1,000달러라는 예산 한도도 존재했다.
고성능 인스턴스를 계속 쓴다면 빠르게 비용 한도를 초과할 수밖에 없는 구조였다.

결국 우리가 선택할 수 있는 전략은 명확했다.
싸고, vCPU가 적고, 비용을 예측할 수 있는 인스턴스를 많이 쓰는 것
기술적 이유와 비용 구조, 할당량 제약이 모두 맞물리며
‘더 작고 많은 인스턴스’ 전략이 선택된 것이다.


왜 더 작고 많은 인스턴스가 효과적일까?

  1. Stop-the-World GC의 영향 분산

    • t2.small 인스턴스는 적은 요청을 처리하므로, GC가 발생하더라도 전체 서비스에 미치는 영향은 작다.
    • NLB가 요청을 분산시켜 GC 중인 인스턴스를 자동 회피할 수 있다.
  2. 힙 크기 대비 GC 주기 최적화

    • RAM이 작기 때문에 기본 힙 크기도 작지만, 처리량 역시 적기 때문에 GC 주기도 길어지거나 GC 자체가 가볍게 끝난다.
    • GC가 발생해도 해당 인스턴스에만 국한되어 전체 서비스가 멈추는 일은 없다.
  3. 비용 효율성

    • t2.small은 단가가 매우 낮다.
    • 인스턴스 수가 늘었지만, 비용 대비 성능 효율이 오히려 더 높아졌다.

해결 결과: RPS 10,000 달성


스케일 아웃 전략을 적용한 후 부하 테스트를 다시 실행했고, 다음과 같은 결과를 얻었다.

이 전략은 특히 Node.js처럼 단일 스레드 기반의 런타임에서 Stop-the-World GC를 분산시키는 데 매우 효과적이었다.


정리

댓글