본문 바로가기

Web/Infra15

[Tech 면접] 시스템을 설계해보라는 질문을 받는다면? 개요 특정 시스템의 요구사항을 명세하고, 해당 시스템을 지원자에게 설계해보라고 하는 질문은 지원자의 커뮤니케이션 능력과 기본적인 CS지식의 깊이를 동시에 확인할 수 있는 질문입니다. 큰 종이 한 장을 주며 시스템의 전체적인 아키텍처를 그리라고 하는 질문을 받았을 때 꽤나 난감하기도 합니다. 시스템 설계에 대한 질문에서 중요한 포인트는 두 가지입니다. 지원자의 커뮤니케이션 능력 전체적인 아키텍처 지식 물론 더 중요한 것을 꼽으라면 지원자의 커뮤니케이션 능력이 더 중요하다고 볼 수 있겠네요. 지원자는 요구사항에 대해 끊임없이 질문자와 소통하며 시스템을 하나하나 구성해야 합니다. 주어진 요구사항은 설계하기에 충분하지 않을 가능성이 높습니다. 나머지 확실하지 않은 부분은 질문자와 계속해서 소통하며 채워 나아가야.. 2020. 6. 12.
Kubernetes(쿠버네티스)를 소개합니다 들어가며 이 글은 쿠버네티스가 무엇이고, 뭐가 좋은지 소개하는 글입니다. 자세한 내부 구조나 구현 방법보다는 쿠버네티스에 입문하는 분들을 대상으로 하고 있습니다. 도커와 컨테이너가 무엇인지 안다는 가정 하에 소개를 진행합니다. 컨테이너가 무엇이지? 도커가 뭐야?라는 생각이 드신다면 제 이전 소개글인 Docker를 소개합니다 를 참고해주세요. 쿠버네티스의 가장 큰 진입장벽은 용어입니다. Pod(파드), Service(서비스), Ingress(인그레스)등 처음 보는 생소한 단어가 튀어나오니 당황하게 되고 어떤 역할을 하는지도 파악하기가 참 어려웠습니다. 이번 포스팅에서는 이러한 용어들을 정리해서 쿠버네티스와 관련된 글을 읽을 수 있는 레벨까지 소개해드리는게 목표입니다. 쿠버네티스가 뭘까요? 도커와 컨테이너가.. 2020. 5. 31.
Docker를 소개합니다 들어가며해당 글은 실전 Docker 사용법보다는, Docker가 무엇인지 소개하는 것을 목표로 하고 있습니다. 자세한 Docker 명령어와 사용법을 알고 싶다면 Docker Doc를 참고해주세요! Docker 개념 잡기Docker란 무엇일까요? 개발자라면 꼭 알아야 한다고 하는 이야기도 들리고 도커가 뭔지 어떻게 감을 잡을지 모르겠다고 하는 도커 입문자에게는 Docker의 개념을 잡기가 참 어렵습니다. 도커에 대해 검색하고 공부할 때 컨테이너, 패키징, 이미지 등등 낯선 단어의 등장에 머리부터 아파지기 쉽습니다. 이 글은 Docker가 뭔지 감을 못 잡고 계신 분들, "그래서 Docker 왜 써야 하는데?"라는 의문을 가지고 계신 분들을 대상으로 하고 있습니다. 저는 새로운 개념을 공부할 때는 우선 공식.. 2020. 5. 23.
동기/비동기와 블로킹/논블로킹 동기, 비동기 그리고 블로킹, 논블로킹은 프로그램을 개발할 때 중요한 개념 중 하나입니다. 기초 프로그래밍을 배우고 응용 파트인 병렬 프로그래밍을 익힐 때 나오는 개념이고 익히기 쉽지 않은 개념이기도 합니다. 동기와 비동기 개념과 블로킹과 논블로킹은 혼용하여 사용하는 경우가 있지만 엄연히 서로 다른 개념입니다. 흔히 '동기' == '블로킹', '비동기' == '논블로킹'으로 헷갈리기도 합니다. 하지만 실제로는 두 개념은 서로 크게 연관관계가 없는 별개의 개념입니다. 동기/비동기는 작업을 수행하는 주체가 두 개 이상이어야 합니다. 이 때 작업의 시간(시작, 종료 등)을 서로 맞춘다면 이를 동기라고 부르고, 서로 작업의 시간이 관계없다면 이를 비동기라고 부릅니다. 반면 블로킹/논블로킹은 작업의 대상이 2개 .. 2020. 5. 8.
브라우저에 URL을 입력했을 때 발생하는 일들 지금부터 제 인터넷 브라우저에 www.daum.net을 입력해보고 어떤 일이 일어나는지 과정을 알아보겠습니다. 웹 통신의 큰 흐름에 대해 간략하게 알아보겠습니다. 1. 브라우저의 URL 파싱 URL을 입력받은 브라우저는 일단 이 URL의 구조를 해석합니다. 어떤 프로토콜로 어느 도메인으로 어떤 포트로 보낼지 해석하게 되는 것이죠. 기본적으로 URL의 구조는 아래와 같습니다. - 어떤 프로토콜을 통해 해당 URL에 요청할 것인지 - 어떤 URL로 요청할 것인지 - 어떤 포트로 요청할 것인지 브라우저에서 각각 프로토콜, URL, 포트를 해석하여 분석합니다. "잠시만요, 저는 프로토콜과 포트를 입력한 적이 없어요" 명시적으로 포트를 선언하지 않았다면 브라우저에서는 설정된 기본값을 이용해 요청하게 됩니다. HT.. 2020. 4. 25.
로드밸런서의 종류와 동작방식 로드밸런싱이 왜 필요할까? 서버가 단 하나만 존재할 때 수천만명의 사람들이 서버에 동시 접속하면 어떻게 될까요? 하나의 서버는 부하를 감당하지 못할 수도 있을 것입니다. 이를 해결하는 방식에는 장비를 업그레이드하는 Scale-up방식과 장비를 여러개 두는 Scale-out방식이 있습니다. Scale-out 방식으로 여러 서버를 둔다면 해당 서비스에 접근하기 위해서는 서버마다 존재하는 다른 IP가 필요할 것입니다. 서버마다 다른 공인 IP를 부여한다면 사용자들마다 각각 다른 IP로 접속할 것이고, 개발자가 원하는 방식대로 부하를 분산하기 어려워집니다. 예를 들어 100명의 사용자가 존재하고 2대의 서버가 있다면 99명의 사용자가 서버 1에 접속하고 1명의 사용자가 서버 2에 접속할 수도 있는 것이니까요. .. 2020. 3. 23.