안녕하세요. 저는 Jayce입니다. 현재 유니콘 스타트업의 플랫폼 엔지니어로 일하고 있습니다.
저는 창업도 하고 대규모 서비스를 위한 개발도 하고 개발자를 위한 플랫폼을 만들기도 하면서 짧은 시간 동안 서비스 개발자라고 불리는 역할도 수행해보고 플랫폼 엔지니어라고 불리는 역할도 수행했습니다. 그 과정에서 "잘하는 Software Engineer는 어떤 특징이 있고 어떻게 해야 그런 사람이 될 수 있구나"를 나름대로 정립할 수 있었습니다.
저는 짧게 말해서 Deep Dive 하는 사람들을 함께 일하는 엔지니어로서 매력적이라고 느낍니다. 단순히 주어진 일을 기계처럼 쳐내는 사람은 어떤 상황에 대한 최선의 선택을 내리기까지 비교적 오랜 시간이 걸리는 것 같아요. 반면 왜 이런 결정을 해야하는지 기술 내면의 공학적인 이유를 파고들며 이해하는 사람들은 금방 다른 의사 결정에서도 공학적으로 설득력 강한 주장을 할 수 있는 사람이 됩니다.
제가 만드는 강의는 새로운 기술을 얕게 익히는 것을 목표로 하지 않습니다. 저는 주니어 개발자들이 훌륭한 팀 동료, 매력적인 개발자, 단단한 기술자가 될 수 있는 방법을 알려주고 싶습니다. 더욱 매력있는 엔지니어가 되기 위해 조금 더 깊은 내용을 공부해보고 싶은 사람들에게 적합한 강의를 제 최선의 노력으로 만들어보겠습니다. 🙂
Khóa học
Đánh giá khóa học
- Tìm hiểu Git Internals bằng cách tự làm nó
- Thiết kế hệ thống quy mô lớn Phần 1
- Thiết kế hệ thống quy mô lớn Phần 1
- Thiết kế hệ thống quy mô lớn Phần 1
- Thiết kế hệ thống quy mô lớn Phần 1
Bài viết
Hỏi & Đáp
레디스(중앙 상태 관리 서버)에서 동시성 처리 하는 방식
와우... 인프런이 AI를 정말 잘 쓰는군요. 답변이 조금 되신 부분이 있으실까요?1. 일단 지금 RateLimit 강의에 대한 질문이 맞는지 여쭤보고 싶어요. 제가 정확히 어떤 부분에서 말씀 드렸던 건지 찾기 어렵네요.2. 일반적인 내용으로 일단 질문 이해한 바대로 답변드려보겠습니다.Q. 원자적 연산과 분산락으로 동시성 문제를 해결한다? 근데 분산락이 원자적 연산을 만드는 거 아닌가? 그럼 둘은 같은 건가?이런 질문으로 이해했습니다.일단 뉘앙스가 맞아보입니다. 원자적 연산은 Redis 같은 시스템이 어떤 명령어를 처리할 때 이 명령이 완료되기 전까지는 다른 명령어가 끼어들지 못하도록, 말 그대로 원자적으로 요청을 처리합니다. 분산락은 그렇게 명령어(복수, 혹은 단일)를 처리할 수 있도록 만들어주는 역할을 합니다. 원자적 연산은 도구, 분산락은 상위 레벨의 패턴이라고 생각해주세요.Q. 그리고 Redis를 예시로 들었을때, 레디스는 싱글 스레드 동작 방식이라서, 동시성 문제가 제어 된다고 하는데, 이 동시성 문제가 실제로 발생하는 경우는 어떻게 되는건지, redis 서버가 다중 노드일 때 발생하는건지 궁금합니다.Redis 뿐 아니라 보통 이런 분산 시스템에서 정합성이 깨지는 상황은 Read-Modify-Write 상황이거나, Replication 중에 발생합니다.1. RMW: 가장 단순하게 예를 들어서 두 클라이언트가 어떤 정수 값을 읽은 다음 해당 값에서 1을 뺀 값을 저장하는 케이스를 생각해보면, 두 클라이언트가 동시에 읽기를 수행하면 하나의 클라이언트의 요청은 무시되는 효과가 생깁니다.2. Replication: Primary A노드가 명령어 처리하고 복제본에게 값을 전달하기 전에 죽으면, 다른 Primary B가 선출되었을 때 해당 명령어는 유실된 상태가 됩니다.1번은 Persistant Layer, Cache Layer에서 클라이언트와 상호작용에서 문제가 생길 수 있는 부분이고, 2번의 경우는 시스템이 사용된 트레이드오프로 인해 발생합니다. Primary Node에만 쓰기에 성공하면 성공 응답을 주는 경우는 이런 장애에 취약할 수 있습니다. 하지만 성능은 빠르겠죠? 어떤 경우는 특정 수(쿼럼)의 Replication에 전파가 성공해야만 클라이언트에게 성공 응답을 넘기도록 하는 경우도 있습니다. 이러면 성능은 느려지지만 일관성 유지가 쉬워지겠죠? CAP 이론대로요 🙂> 첨언: 다중노드(Redis Cluster)인 경우 모든 경우에 대해 싱글 스레드가 동작 가능한 건 아닙니다. 한 노드가 처리할 수 있는 Key를 대상으로 요청해야만 싱글 스레드로 처리가 가능하고 그렇지 않다면 에러가 발생합니다. 예를 들어 A키를 다루는 A' 노드, B키를 다루는 B' 노드가 있다면 A, B에 대한 멀티 키 연산은 에러를 반환합니다.
- 0
- 3
- 54
Hỏi & Đáp
소스코드 요청드립니다.
안녕하세요! 여기서 확인하실 수 있습니다 :)
- 0
- 1
- 63
Hỏi & Đáp
.single cluster 큰 장애 복구
안녕하세요! 맞습니다. 우선 자연스러운 이해를 돕기 위해 원문의 위치를 알려드리겠습니다. 논문의 3.3장의 첫 문단 내용에 해당합니다.하나의 클러스터만 운영한다고 가정하면 조금 부자연스러운 느낌이죠. 제가 이해한 방향을 말씀드리자면, 여기서 집중한 얘기는 "단일 클러스터만 운영하고 있습니다"가 아니라, "단일 클러스터 내에서의 문제를 어떻게 해결했느냐"입니다. 다음 챕터를 봤을 때 집중한 문제는 "여러 클러스터 사이의 문제는 어떻게 해결하고 있습니다"에 해당하는 거죠. 즉, 하나의 클러스터만 운영하는 상황을 가정하는 게 아니라 하나의 클러스터에서 발생하는 문제를 집중해서 다루는 챕터가 3챕터라고 이해하는 게 올바른 방향이라고 생각됩니다. 즉 여러 클러스터를 운영하는 상황이지만, 하나의 클러스터에서 생기는 문제들을 다루는 얘기이고 클러스터가 전체적으로 Offline 상황이 닥치면 다른 클러스터로 우회한다는 설명입니다.
- 0
- 1
- 383
Hỏi & Đáp
part 2 강의 오픈 문의
안녕하세요! 이 강의는 원래 파트3 까지는 다룰 예정이었습니다. 첫 강의부터 거대한 걸 만들기 보단 이런 주제가 얼마나 수요가 있을지 확인할 목적으로 파트1을 짧게 만들고, 저조할 것으로 예상도 했으나, 예상한 범위를 많이 밑돌고 있습니다. 그래서 지금은 실습형 강의를 준비 중입니다.Part2는 네트워크, 데이터 흐름 관련된 주제를 구상했었는데요, HTTP1~3 internal, Proxy 모델, PubSub, LB, Cache 같은 주제를 준비했었네요.
- 0
- 1
- 530