Zero Copyλ₯Ό μ•„μ‹œλ‚˜μš”? with kotlin S3 upload

ν˜Ήμ‹œ Zero Copy에 λŒ€ν•΄μ„œ μ•„μ‹œλ‚˜μš”? 저도 데이터 μ—”μ§€λ‹ˆμ–΄λ§μ„ κ³΅λΆ€ν•˜λ©΄μ„œ 처음 μ•Œκ²Œλ˜μ—ˆκ³  κ½€ ν₯미둜운 λ©”μ»€λ‹ˆμ¦˜μ΄μ—ˆμŠ΅λ‹ˆλ‹€ γ…Žγ…Žκ·Έλ¦¬κ³  μ΅œκ·Όμ— kotlin을 ν™œμš©ν•΄μ„œ νŒŒμΌ μ„œλΉ™μ„ λ‹€λ£¨λŠ” μž‘업을 μ§„ν–‰ν–ˆλ˜ κ²½ν—˜μ΄ μžˆλŠ”데, λ‹Ήμ‹œ 파일 전솑 속도가 κ½€ μ€‘μš”ν•œ μš”μ†Œμ˜€κ³  μžμ—°μŠ€λŸ½κ²Œ Zero Copyκ°€ λ– μ˜¬λžμŠ΅λ‹ˆλ‹€.kotlin을 μ‚¬μš©ν•˜λ‹€λ³΄λ‹ˆ JVMμ΄λΌλŠ” λ„κ΅¬μ—μ„œ μ˜€λŠ” νŠΉμ„± 등도 κ³ λ―Όν•˜κ²Œ 되고 κ½€ μ˜λ―ΈμžˆλŠ” κ²½ν—˜μ΄μ—ˆλŠ”λ°μš”.κ·Έλž˜μ„œ μ˜€λŠ˜μ€ Zero Copy에 λŒ€ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œ μ†Œκ°œν•˜κ³  kotlin S3 uploadμ—μ„œ Zero Copyκ°€ κ°€λŠ₯ν•œμ§€? λ“±μ„ κ³΅μœ ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€ :)λ¨Όμ €, μ½”λ“œλ ˆλ²¨μ—μ„œ 파일 전솑 λ“± local storage(e.g. disk)μ—μ„œ νŒŒμΌμ„ μ½μ–΄μ„œ μ™ΈλΆ€λ‘œ λ³΄λ‚΄λŠ” λ‘œμ§μ„ κ΅¬μ„±ν–ˆλ‹€λ©΄ μ–΄λ–€ 과정을 거치게 될까..

BackEnd 2024. 11. 24. 18:50
우리 μ„œλ²„μ— OOMKilled μž₯μ• κ°€ λ°œμƒν–ˆμ–΄μš” - 회고편

이 글은 μ΅œκ·Όμ— μžˆμ—ˆλ˜ μ„œλ²„ OOMKilled μž₯μ•  과정을 기둝 및 κ³΅μœ ν•˜λ©° νšŒκ³ ν•˜λŠ” κΈ€μž…λ‹ˆλ‹€.λ˜ν•œ 이 글은 인프라 레벨(cpu, memory)μ—μ„œμ˜ μž₯μ•  감지 및 λŒ€μ‘ ν”„λ‘œμ„ΈμŠ€μ— κ΄€ν•œ λ‚΄μš©μ„ κΈ°λ‘ν•˜κΈ° λ•Œλ¬Έμ— NPE(Null Point Exception) 같은 μ½”λ“œ λ ˆλ²¨μ—μ„œμ˜ λͺ…ν™•ν•˜κ³  λ‹¨μˆœν•œ λ¬Έμ œλŠ” 크게 닀루지 μ•ŠμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬λΆ„듀은 μ„œλ²„μ˜ λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•΄ OOMKilled μž₯μ•  λ°œμƒ μ‹œ μ–΄λ–»κ²Œ λŒ€μ‘ν•˜μ‹œλ‚˜μš”?μ €λŠ” 보톡 λ‹€μŒκ³Ό 같은 ν”„λ‘œμ„ΈμŠ€λ‘œ λŒ€μ‘ν•©λ‹ˆλ‹€.1. μž₯μ•  감지2. μ˜ˆμƒλ˜λŠ” 원인 λ²”μœ„λ₯Ό ν•©λ¦¬μ μœΌλ‘œ μ°Ύκ³  가섀을 μ„Έμš΄λ‹€. (κ°€μ„€ 수립)3. 가섀을 κ²€μ¦ν•˜κΈ° μœ„ν•΄ APM, log λ“± λ‹¨μ„œλ“€μ„ μ°Ύκ³  가섀을 ν™•μΈν•˜κ³  원인 λ²”μœ„λ₯Ό μ’ν˜€κ°„λ‹€. (κ°€μ„€ 검증 및 route finding)4. μœ„ 과정을 λ°˜λ³΅ν•˜μ—¬ 원인을..

BackEnd 2024. 11. 10. 21:08
같이 μΌν•˜κ³  싢은 μ—”μ§€λ‹ˆμ–΄

'쒋은 개발자 되기'μ—μ„œ μ΄μ–΄μ§€λŠ” κΈ€λ‘œ μ§€κ·Ήνžˆ 주관적인 λ‚΄μš©μ„ λ‹€λ£Ήλ‹ˆλ‹€ :)2023λ…„ 9월에 '쒋은 개발자 되기'λΌλŠ” 글을 ν†΅ν•΄μ„œ λΉ„λ°€ λ…ΈνŠΈ(?)λ₯Ό κ³΅κ°œν–ˆμ—ˆλŠ”λ° μ΄μ œλŠ” 1년이 μ§€λ‚œ μ‹œμ μ΄ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.κ·Έ λ‹Ήμ‹œμ— μ μ—ˆλ˜ λ‚΄μš©μ€ λ‹€μŒκ³Ό 같이 ν•­λͺ©μ΄ 2~3개 정도 λ˜λŠ” λ‚΄μš©μ΄μ—ˆμ–΄μš”.  κ·Έλ¦¬κ³  μ§€κΈˆ μ‹œμ μœΌλ‘œλŠ” 1λ…„ κ°„μ˜ κ²½ν—˜μ΄ 담겨져 λ‹€μŒκ³Ό 같은 λ‚΄μš©μœΌλ‘œ λ³€κ²½λ˜μ—ˆμ–΄μš”.μ˜€λŠ˜μ€ μ•„λž˜ λ‚΄μš©μ˜ 각 κΌ­μ§€λ³„λ‘œ μ’€ 더 이야기λ₯Ό 해보렀고 ν•©λ‹ˆλ‹€ :) AUSGCONμ΄λΌλŠ” μ»¨νΌλŸ°μŠ€μ—μ„œλ„ μ•„λž˜ λ‚΄μš©μ„ 기반으둜 λ°œν‘œλ₯Ό ν–ˆμ—ˆλŠ”λ°μš”! κ΄€μ‹¬μžˆλŠ” 뢄듀은 μ‚΄νŽ΄λ³΄μ…”λ„ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€ γ…Žγ…Ž> gRPC와 ν•¨κ»˜ μ•Œμ•„λ³΄λŠ” 같이 μΌν•˜κ³  싢은 μ—”μ§€λ‹ˆμ–΄ λ°œν‘œμžλ£Œ μ΄κ±΄ ν•˜μ§€ λ§μžμƒλŒ€λ°© μž…μž₯을 κ³ λ €ν•˜μ§€ μ•Šκ³  μΆ©λΆ„ν•œ λ§₯락 곡유 없이 본인만 μ•„λŠ” 이야기λ₯Ό ν•œλ‹€-..

κΏˆν‹€κΏˆν‹€ 2024. 10. 13. 17:58
νŠΈλžœμž­μ…˜ 격리 μˆ˜μ€€(isolation level)μ΄λž€?

νŠΈλžœμž­μ…˜μ˜ 격리 μˆ˜μ€€(isolation level)에 λŒ€ν•΄μ„œ μ •ν™•ν•˜κ²Œ μ΄ν•΄ν•˜λŠ” 것은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œμ§μ„ μ •ν™•ν•˜κ²Œ μ œμ–΄ν•˜λŠ” 것에 μžˆμ–΄μ„œ μ€‘μš”ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 격리 μˆ˜μ€€μ΄ ꡬ체적으둜 μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€ μ •ν™•ν•˜κ²Œ λͺ¨λ₯΄κ³  μžˆμ—ˆλ˜ 사싀을 λ°œκ²¬ν•΄μ„œ μž¬ν•™μŠ΅μ„ μœ„ν•΄ λ‚΄μš©μ„ μ •λ¦¬ν•©λ‹ˆλ‹€. 이 글은 MySQL κΈ°μ€€μœΌλ‘œ μž‘μ„±ν•©λ‹ˆλ‹€. νŠΈλžœμž­μ…˜ 격리 μˆ˜μ€€ 격리 μˆ˜μ€€μ€ 크게 λ‹€μŒκ³Ό 같이 4κ°€μ§€λ‘œ λ‹€μŒκ³Ό 같이 λ‚˜λ‰˜κ²Œ λ©λ‹ˆλ‹€. READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE 1λ²ˆμ—μ„œ 4번으둜 갈수둝 νŠΈλžœμž­μ…˜ κ°„μ˜ 데이터 격리 μˆ˜μ€€μ΄ 높아지며, λ™μ‹œ 처리 μ„±λŠ₯이 λ–¨μ–΄μ§€λŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€. 그리고 보톡 SERIALIZABLE 정도가 μ•„λ‹ˆλ©΄ 크게 μ„±λŠ₯의 κ°œμ„ μ΄λ‚˜ μ €ν•˜λŠ” λ°œμƒν•˜μ§€ ..

BackEnd 2024. 3. 3. 20:13
Java Optional이 response ν•„λ“œ nullable ν‘œν˜„μ— μ ν•©ν• κΉŒ?

Javaμ—μ„œλŠ” null을 μ•ˆμ „ν•˜κ²Œ 닀루고 ν‘œν˜„λ ₯을 λ†’μ΄λŠ” λ°©λ²•μœΌλ‘œ Optional이 잘 μ•Œλ €μ ΈμžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ‹€μ œλ‘œ μ‚¬μš©ν•˜λ‹€λ³΄λ‹ˆ wrapper νƒ€μž…μ΄λΌλŠ” 점으둜 인해 κ³ λ―Όλ˜λŠ” μš”μΈλ“€μ΄ κ½€ λ§Žμ•˜λŠ”λ°μš”. μ •ν™•νžˆλŠ” Optional을 nullable ν‘œν˜„μ˜ μš©λ„λ‘œ API response ν•„λ“œ 값에 μ‚¬μš©ν•˜κ³  μ‹Άμ—ˆλŠ”λ° κ·Έ κ³Όμ •μ—μ„œ κ³ λ―Όλ˜λŠ” 점이 μžˆμ—ˆμ–΄μš”. μ˜€λŠ˜μ€ κ·Έ λ‚΄μš©μ— λŒ€ν•΄ 개인적인 생각을 적어보렀고 ν•©λ‹ˆλ‹€. Optional을 response ν•„λ“œμ— μ‚¬μš©ν•  λ•Œ 문제점 1. 직렬화 "Optional은 μ§λ ¬ν™”ν•˜λŠ”λ° μ˜λ„μΉ˜ μ•ŠλŠ” ν•„λ“œκ°€ μ§λ ¬ν™”λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€." 직렬화 라이브러리의 κ΅¬ν˜„λ§ˆλ‹€ λ‹€λ₯΄κ² μ§€λ§Œ λͺ¨λ‘ Optional을 ν˜Έν™˜ν•˜λŠ”μ§€λŠ” 보μž₯λ˜μ§€ μ•ŠμœΌλ―€λ‘œ μš°λ¦¬κ°€ μ œμ–΄ν•  수 μžˆλŠ” μ˜μ—­μ΄ 쀄어듀고..

JAVA 2024. 2. 18. 23:51
빅데이터λ₯Ό μ§€νƒ±ν•˜λŠ” 기술 CH4 - λΉ…λ°μ΄ν„°μ˜ 좕적

λ‹€μŒκ³Ό 같은 지식을 ν•™μŠ΅ν•˜κ³  μ •λ¦¬ν•©λ‹ˆλ‹€ λ²Œν¬ν˜•, 슀트리밍 ν˜• 데이터 전솑 μŠ€νŠΈλ¦¬λ°ν˜•μ˜ 데이터 전솑인 λ©”μ‹œμ§€ 배솑 ꡬ쑰와 νŠΈλ ˆμ΄λ“œμ˜€ν”„ μ„±λŠ₯을 μ–»κ³  신뒰성이 ν¬μƒλ˜λŠ” 경우 λ“± λ©”μ‹œμ§€ 배솑에 μžˆμ–΄μ„œ ν”„λ‘œμ„ΈμŠ€ μ‹œκ°„κ³Ό 이벀트 μ‹œκ°„μ˜ ꡬ별 이벀트 μ‹œκ°„μ„ κ³ λ €ν•œ μ΅œμ ν™” 데이터 색인을 ν†΅ν•œ μ΅œμ ν™” NoSQL λ°μ΄ν„°λ² μ΄μŠ€μ˜ λͺ‡ 가지 νŠΉμ„±κ³Ό ꡬ뢄 데이터 μΆ•μ μ˜ μ „λ°˜μ μΈ ν”Œλ‘œμš° 4-1 벌크 ν˜• 슀트리밍 ν˜•μ˜ 데이터 μˆ˜μ§‘ 데이터 μ „μ†‘μ—λŠ” 벌크 ν˜•κ³Ό 슀트리밍 ν˜•μ˜ 두 μ’…λ₯˜κ°€ 있음 각각의 λ°©λ²•μœΌλ‘œ λΆ„μ‚° μŠ€ν† λ¦¬μ§€μ— 데이터가 μ €μž₯될 λ•ŒκΉŒμ§€μ˜ 흐름을 μ‚΄νŽ΄λ³΄μž. 객체 μŠ€ν† λ¦¬μ§€μ™€ 데이터 μˆ˜μ§‘ λΉ…λ°μ΄ν„°λŠ” λŒ€λΆ€λΆ„μ˜ 경우 ν™•μž₯성이 높은 λΆ„μ‚° μŠ€ν† λ¦¬μ§€μ— μ €μž₯됨 λΆ„μ‚° ν˜•μ˜ λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ΄μš©λ˜λŠ” κ²½μš°λ„ μžˆμ§€λ§Œ λŒ€λŸ‰μœΌλ‘œ νŒŒμΌμ„ μ €μž₯ν•˜κΈ° μœ„ν•œ 객체 ..

data engineering 2024. 1. 21. 16:07
2023 회고

2023년은 정말 λ‹€μ΄λ‚˜λ―Ήν–ˆλ˜ 것 κ°™μ•„μš”. 1λ…„μ΄λΌλŠ” μ‹œκ°„λ™μ•ˆ 정말 λ§Žμ€ 일듀이 μžˆμ—ˆκ³  κ°€μΉ˜κ΄€μ—λ„ 큰 λ³€ν™”κ°€ μƒκ²Όλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€. 그리고 μ΄μ œλŠ” 1λ…„μ΄λΌλŠ” μ‹œκ°„μ— μ΄λ ‡κ²Œ λ§Žμ€ 것듀을 ν•  수 μžˆλ‹€λŠ” κ±Έ μ΄ν•΄ν–ˆκ³  λ‹€λ₯Έ 이듀이 κ²ͺ은 μ‹œκ°„κ³Ό 각자의 μ‹œκ°„μ„ μ‘΄μ€‘ν•˜κ²Œ 된 것 κ°™μ•„μš”. μ˜¬ν•΄ 3λ…„μ°¨κ°€ λ˜μ—ˆκ³  내년이면 μœ€μ„μ—΄ λ‚˜μ΄ μ•„λ‹ˆκ³  μ›λž˜ λ‚˜μ΄λ‘œ 25μ‚΄(00년생)이 λ˜λŠ”λ° μ‹œκ°„μ΄ 지날 수둝 점점 μ—¬μœ κ°€ μƒκΈ°λ©΄μ„œλ„ μƒˆλ‘œ κ²ͺλŠ” κ²½ν—˜λ“€μ΄ λ§Žμ•„μ„œ 즐거운 것 κ°™μŠ΅λ‹ˆλ‹€. 2023에 μžˆμ—ˆλ˜ 일듀 쀑에 κΈ°μ–΅λ‚˜λŠ” 것듀은 ν•˜λ‚˜μ”© μ‚΄νŽ΄λ³Όκ²Œμš”. AUSGμ—μ„œ λ§Œλ‚œ μ†Œμ€‘ν•œ μŠ€ν„°λ”” AUSGλΌλŠ” AWS κ΄€λ ¨ ν΄λΌμš°λ“œ λ™μ•„λ¦¬μ—μ„œ 기술 μ±… μŠ€ν„°λ””λ₯Ό ν•œ 9κ°œμ›” 정도 λ˜λŠ” μ‹œκ°„ λ™μ•ˆ κ½€ 였래 μ§„ν–‰ν–ˆμ–΄μš”. μŠ€ν„°λ”” ꡬ성원뢄 쀑에 μ–΄λ–€ 뢄이 "μš°λ¦¬λŠ” λ‹¨μˆœνžˆ..

κΏˆν‹€κΏˆν‹€ 2023. 12. 31. 20:48