전체 글
-
Consistent Hashing (일관된 해싱): 데이터 분산의 핵심ML engineer/System designs 2025. 7. 31. 23:01
들어가며: 분산 시스템에서 데이터는 어떻게 '골고루' 분배될까?대규모 분산 시스템을 설계할 때 가장 중요한 과제 중 하나는 데이터나 요청을 여러 서버(노드)에 어떻게 효율적으로 분배할 것인가입니다. 단순히 hash(key) % N (N은 서버 개수)과 같은 모듈러 연산을 사용하면 되지 않을까 생각할 수 있습니다. 하지만 이 방식은 서버가 추가되거나 제거될 때 치명적인 문제점을 발생시킵니다. 서버 개수 N이 변하면 대부분의 키-서버 매핑이 바뀌어 대규모 데이터 재분배가 일어나고, 이는 곧 시스템 성능 저하와 장애로 이어질 수 있습니다.이러한 문제를 해결하기 위해 등장한 개념이 바로 Consistent Hashing (일관된 해싱)입니다. Consistent Hashing은 분산 시스템에서 노드가 추가되거나..
-
CAP 이론: 분산 시스템 설계의 트레이드오프ML engineer/System designs 2025. 7. 21. 23:32
# 들어가며: 분산 시스템의 마법 같은 세 가지 속성, 하지만…분산 시스템을 설계할 때, 우리는 흔히 확장성(Scalability), 가용성(Availability), 내구성(Durability), 성능(Performance) 등 다양한 목표를 추구합니다. 이 중에서도 특히 중요한 세 가지 속성이 있습니다: 일관성(Consistency), 가용성(Availability), 분할 허용성(Partition Tolerance). 그리고 이 세 가지 속성 사이에는 분산 시스템 설계자가 반드시 이해하고 타협해야 하는 근본적인 제약이 존재합니다. 바로 CAP 이론입니다.CAP 이론은 2000년 Eric Brewer 교수가 제안한 "Brewer's CAP Theorem"에서 유래했으며, 이후 Seth Gilbert와..
-
Distributed Counter (분산 카운터): 분산 시스템 첫걸음ML engineer/System designs 2025. 7. 17. 23:49
들어가며: 숫자를 세는 일, 왜 분산 환경에서 어려울까?게시글 '좋아요' 수, 웹사이트 방문자 수, 특정 이벤트 발생 횟수… 개발자라면 카운터 기능을 구현해본 경험이 많을 것입니다. 단일 서버 환경에서는 간단한 변수 증가나 데이터베이스의 숫자 필드 업데이트만으로 충분하죠. 하지만 이러한 카운터가 수많은 서버에 분산되어 동작하고, 초당 수천, 수만 건의 요청을 처리해야 한다면 어떨까요? 갑자기 문제가 복잡해집니다.분산 카운터는 언뜻 쉬워 보이지만, 분산 시스템에서 발생하는 데이터 일관성, 동시성, 성능 등의 핵심적인 문제들을 이해하는 데 아주 좋은 예시가 됩니다. 복잡한 서비스도 아니기 때문에 주니어 개발자를 대상으로 질문하기에도 좋은 주제고요. 이번 포스팅에서는 분산 카운터를 설계하는 과정을 통해, 분산..
-
시스템 디자인 인터뷰, 단계별 진행ML engineer/System designs 2025. 7. 16. 23:53
들어가며: 막연함은 끝, 시스템 디자인 인터뷰의 내비게이션!지난 포스팅에서 시스템 디자인 인터뷰의 중요성과 본질에 대해 이야기했습니다. 이제 실전으로 들어가 볼 시간입니다. 막상 시스템 디자인 인터뷰를 마주하면 어디서부터 시작해야 할지 막막할 수 있습니다.하지만 걱정하지 마십시오. 시스템 디자인 인터뷰는 마치 거대한 시스템을 설계하는 과정과 같습니다. 복잡한 문제를 한 번에 해결하기보다, 단계별로 쪼개어 접근하면 훨씬 효율적입니다. 면접관들도 여러분이 이 과정을 얼마나 체계적으로 풀어나가는지 보고 싶어 합니다. (사실 어느정도 면접 경험이 쌓이면, 매번 같은 패턴이라는 느낌을 받을 수 도 있습니다.)이번 포스팅에서는 시스템 디자인 인터뷰의 표준적인 진행 단계와 각 단계에서 여러분이 해야 할 역할에 대해 ..
-
시스템 디자인 인터뷰, 무엇이고 왜 중요한가?ML engineer/System designs 2025. 7. 16. 23:21
시스템 디자인 인터뷰, 그 본질을 이해하다안녕하세요. 시니어 개발자로서 여러분과 시스템 디자인에 대한 깊이 있는 이야기를 나누게 되어 반갑습니다. 이직을 준비하는 3~5년차 주니어 개발자분들 또는 처음으로 소위 말해 빅테크 기업에 이직을 도전하는 분들에게 시스템 디자인 인터뷰는 다소 생소하거나 어렵게 느껴질 수 있습니다. 하지만 이는 개발자로서 한 단계 더 성장하는 데 필수적인 역량이자, 여러분의 문제 해결 능력을 보여줄 수 있는 중요한 기회입니다.특히 AI(LLM) 시대의 도래와 함께 개발자의 역할은 빠르게 변화하고 있습니다. 단순 코딩 능력은 AI의 도움을 받아 상당 부분 자동화될 수 있는 영역이 되고 있습니다. 이제는 개별 코드 작성 능력보다는 전체 시스템을 조망하고, 복잡한 요구사항을 기반으로 효..
-
Linear Regression에서 Forward 이해하기ML engineer/DIY Machine Learning 2024. 9. 14. 00:57
Linear Regression 이란?Linear Regression은 선형회귀라는 명칭으로 비단 ML이 아닌 영역에서도 많이 들어보셨을 수 있습니다.말 그대로, 어떤 모델이 데이터셋으로부터 linear(선형) 관계를 가정하고 그 임의의 선형식을 찾아가는(regression) 방법입니다.예를 들어, 택시 요금을 예측하는 모델을 만든다고 가정해 볼 때, 약 10만 건의 택시 이용 로그 데이터를 가지고 있다고 합시다. 각 택시 이용 로그는, 다음 네가지 feature를 가진다고 칩니다. 1. 이용 시각 및 날짜 (연-월-일-시:분:초) 2. 탑승 거리 (km) 3. 탑승 시간 (분) 4. 이용 요금 (원)Linear 관계를 가정한다라는건, 우리는 다음과 같은 linear equatio..
-
Gradient Descent 에 대한 이해ML engineer/DIY Machine Learning 2024. 8. 4. 19:10
배경머신러닝에 있어 매우 중요한 알고리즘인 gradient descent에 대해 알아봅시다.머신러닝, 신경망 네트워크, 딥러닝에 대해 이야길 듣거나 접했다면, 이런 것들이 대부분 gradient descent를 통해 학습되었을 정도로 중요한 알고리즘/방법론인데요,현업에서 종종 "모델이 상관관계를 학습 한다", "이 데이터에 대해 학습시켰다"와 같은 표현을 듣게 되는데요, 이런 표현들이 의미하는 근간에는 결국 gradient descent라는 알고리즘이 사용됩니다.알고리즘으로 풀고자 하는 문제는, f(x)=x2 에 대해 최소값을 찾는 문제라고 칩시다.즉, gradient descent 은 일종의 최적화 테크닉으로, 어떤 함수의 최솟값을 찾는 알고리즘/방법론입니다. (함수를 반전시키면 물론 최댓값을..
-
IaaS / PaaS / SaaSML engineer/Papers & CS generals 2023. 9. 22. 01:07
🕓 2 mins read 업계에서 많이 쓰는 용어인데 잘 모르고 그냥 대충 알고 있기도 하고, 남용하기도 하는데 한번 확인 하면 좋을 것 같아 기록합니다. # 정의 IaaS : Infrastructure-as-a-Service PaaS: Platform-as-a-Service SaaS: Software-as-a-Service 이제.. 여기에서 좀 막나가는 경우도 종종 보입니다만.. 두루미-as-a-Service 식으로 아무거나 아무개-aaS 라고 이름 붙이기도 하는것 같습니다. # 비교 왼쪽 끝열을 보면 기존에 아무개-aaS 이전에는 그냥 다 직접 관리 했던 부분을 인프라 레벨에서부터 어플리케이션 레벨까지 클라우드화 해주는 서비스라고 보시면 됩니다. 클라우드 시대 이전 방식대로 직접 다 관리할 경우 장점..