Interview
-
실시간 채팅 서비스를 설계Interview 2025. 3. 26. 20:18
시스템 설계 면접에서 자주 나오는 고급 질문으로 면접관은 이 질문을 통해서 다음을 보고 싶어 합니다.실시간성에 대한 이해메시징 시스템 설계 경험대규모 트래픽 처리 능력장애 처리 및 확장성 고려사용자/채팅방/메시지 데이터 모델링 능력질문: 실시간 채팅 서비스를 설계해보세요1. 요구사항 정리 (Clarifying Questions)기능적 요구사항1:1 채팅, 그룹 채팅메시지 전송, 수신메시지 읽음 여부 표시메시지 히스토리 저장/조회온라인 상태 표시비기능적 요구사항실시간 메시징 (Low Latency)확장성 (수백만 유저)장애 복구, 내결함성보안 (인증/암호화)“혹시 메시지는 1주일 동안만 저장되면 될까요, 아니면 영구 저장인가요?”“서비스 지역이 글로벌인가요? 한국 중심인가요?” 2. 아키텍처 개요[Clie..
-
쉽게 설명하는 Forward Index vs Inverted IndexInterview 2025. 3. 25. 08:40
🔸 Forward Index (전방 인덱스) — 전통적인 데이터베이스 방식문서를 중심으로 정보를 저장예를 들어 책 여러 권이 있다고 가정해보세요.Forward Index는 이렇게 저장하는 방식이에요:📘 Book 1: "I love Elasticsearch"📘 Book 2: "Elasticsearch is powerful"📘 Book 3: "I love databases"→ 이 경우, 각 문서가 어떤 단어를 포함하는지만 알고 있어요. 🔹 Inverted Index (역 인덱스) — 검색엔진 방식단어를 중심으로 정보를 저장이제 반대로 생각해봅시다."단어 → 어떤 문서에 포함되어 있는가?"를 저장하는 방식이에요:"elasticsearch" → [Book 1, Book 2] "love" ..
-
Elasticsearch/OpenSearch 관련 인터뷰 질문Interview 2025. 3. 25. 08:30
기본 개념 및 아키텍처Elasticsearch와 OpenSearch의 차이점은?Elasticsearch의 클러스터, 노드, 샤드, 리플리카의 개념을 설명해보세요.Elasticsearch의 inverted index는 어떻게 작동하나요?Elasticsearch의 Lucene과의 관계는?index, document, type, mapping, field의 차이와 역할은 무엇인가요?운영 및 인프라Elasticsearch 클러스터의 샤딩 전략은 어떻게 결정하나요?Hot-Warm-Cold 아키텍처는 어떻게 구성하나요? 어떤 상황에서 쓰이나요?Elasticsearch/OpenSearch를 운영할 때 노드 장애가 발생하면 어떻게 복구되나요?Elasticsearch 클러스터의 상태(green/yellow/red)를 설..
-
go 언어 관련 인터뷰 질문들Interview 2025. 3. 24. 07:57
✅ 기초 문법 및 언어 특성Go 언어의 주요 특징은 무엇인가요?Go는 단순하고 읽기 쉬운 문법을 갖고 있어서 협업과 유지보수에 유리한 언어입니다.내장된 병행성 지원(Goroutine, Channel)이 굉장히 강력해서, 고성능 네트워크 서버나 마이크로서비스 구축에 적합하고요.정적 컴파일 언어라 실행 속도가 빠르고, 단일 바이너리로 배포가 가능해 DevOps 측면에서도 효율적입니다.또, 표준 라이브러리가 잘 구성돼 있어서 외부 의존성 없이도 많은 기능을 바로 구현할 수 있습니다. Go에서 defer 키워드의 동작 방식은?defer는 현재 함수가 종료되기 직전에 실행할 코드를 등록할 때 사용합니다. 주로 파일 닫기, 뮤텍스 해제, 커넥션 종료 같은 리소스 정리 작업에 쓰입니다.defer된 함수들은 LIFO ..
-
concurrency(동시성)와 parallelism(병렬성)의 차이Interview 2025. 3. 24. 00:03
구분Concurrency (동시성)Parallelism (병렬성)정의여러 작업을 번갈아 가며 처리여러 작업을 동시에 처리목적효율적인 자원 사용빠른 실행 속도실행 방식한 번에 하나만 실행되지만 빠르게 전환진짜 동시에 여러 개 실행전제 조건하나의 CPU 코어로도 가능둘 이상의 CPU 코어 필요예시바텐더가 여러 고객을 순차 처리바텐더 3명이 각자 고객을 동시에 처리🔍 더 구체적으로 비교✅ 1. Concurrency (동시성)시스템이 여러 작업을 동시에 처리하는 것처럼 보이게 함실제로는 작업을 잘게 쪼개서 빠르게 스위칭OS의 스레드 스케줄링, Go의 goroutine, Node.js의 event loop가 대표 예💡 예시한 명의 요리사가 여러 요리를 동시에 준비하려고,A요리를 끓이는 동안 B요리를 자르러 가..
-
Error Budget의 개념과 소진 시 대응 방안Interview 2025. 3. 18. 14:18
Error Budget은 허용 가능한 장애 시간을 나타내며, SLO를 기준으로 계산됩니다. Error Budget이 소진되면 신규 기능 배포를 중단하고, Root Cause Analysis, Auto Healing 개선, 모니터링 강화 등의 조치를 통해 안정성을 우선적으로 확보해야 합니다. 📌 1️⃣ Error Budget이란?**Error Budget(에러 예산)**은 SLO(Service Level Objective)에서 허용 가능한 실패율을 수치화한 개념입니다.즉, 완벽한 100% 가용성을 목표로 하지 않고, 일정 수준의 장애를 허용하여 새로운 기능 배포와 시스템 안정성 간 균형을 유지하는 것입니다.✅ Error Budget 공식:Error Budget=1−SLOError\ Budget = 1 -..
-
MTTR(Mean Time to Recovery) 단축 방법Interview 2025. 3. 18. 14:11
MTTR을 단축하려면 실시간 모니터링(Alerting), 장애 진단 속도 향상(Observability), 자동 복구(Auto Healing), 장애 대응 프로세스 최적화(Runbook), 무중단 배포(Zero-Downtime Deployment), Chaos Engineering 등을 적용해야 합니다. 📌 1️⃣ MTTR(Mean Time to Recovery)이란?**MTTR(평균 복구 시간)**은 장애 발생 후 정상 운영 상태로 복구하는 데 걸리는 평균 시간을 의미합니다.MTTR이 짧을수록 장애 대응 능력이 뛰어난 시스템이라고 평가할 수 있습니다.공식:MTTR=∑(복구 시간)장애 발생 횟수MTTR = \frac{\sum (\text{복구 시간})}{\text{장애 발생 횟수}}MTTR=장애 발생 ..
-
Postmortem(사후 분석) 문서를 작성할 때 가장 중요한 요소Interview 2025. 3. 18. 14:10
Postmortem 문서는 장애의 원인과 대응 과정을 기록하고, 재발 방지 대책을 수립하기 위한 문서입니다. 이를 위해 장애 개요, 감지 및 대응 타임라인, 근본 원인 분석(RCA), 해결 조치, 재발 방지 대책, 프로세스 개선 사항을 포함해야 합니다. Postmortem 문서는 장애(Incident) 발생 후 원인을 분석하고, 재발 방지 대책을 마련하기 위해 작성하는 문서입니다.SRE 관점에서 Postmortem 문서는 책임을 추궁하는 것이 아니라, 서비스 안정성을 개선하는 데 초점을 맞추어야 합니다.📌 1️⃣ Postmortem 문서의 핵심 목적장애의 원인을 정확히 기록하고, 서비스 안정성을 향상시키기 위한 개선책을 도출**Blameless Culture(비난 없는 문화)**를 유지하여 투명한 장..