본문 바로가기

전체 글

(10)
수평적 확장과 수직적 확장이란? 💡 학습한 내용을 정리한 것입니다. 잘못 이해하거나, 잘못 알고 있는 부분에 대한 조언은 항상 감사합니다. What is scalability? 확장성에 대한 이야기는 많이 듣곤 합니다. 중요하다는 것 또한 인지한 상태인데요! 하지만 확장성이 뭐야? 라는 질문에 답변을 할 때는 머리 속에 떠다니는 단어들이 손에 잘 안 잡혀서 말문이 턱하고 막히는 경험을 했습니다. 그래서 먼저 확장성이 무엇 인지에 대한 정의를 내려보고 시작할게요. 확장성이란, 애플리케이션이 지연시간 없이 증가된 트래픽을 처리하고 견딜 수 있는 능력을 말합니다. 음식을 주문하는 앱이 있다고 가정해볼게요. 오후 세시 쯤 쏟아지는 잠을 이기지 못하고 커피를 한잔을 주문을 했다고 해보죠! 1초만에 주문이 완료가 되었네요. 시간이 흘러 저녁을 먹..
[#1] MSA를 선택한 이유 왜 MSA? delivery-jumper는 주문 배달 애플리케이션입니다. 일반적으로 음식 배달 애플리케이션은 특정 시점에 특정 서비스에 트래픽이 집중될 것으로 예상할 수 있습니다. 아마도 식사 시간이 그 시점이 될 것입니다. 배가 고픈 시점에서 주문 버튼을 누르고 보이는 화면에 오류 메시지가 있다면, 그것이 빈번하게 발생한다면, 그 경험은 애플리케이션을 지우는 결과로 이어지게 될 겁니다. 위와 같은 결과가 발생하지 않도록, 무거운 트래픽에도 충분히 견딜 수 있는 시스템에 대한 고민을 하게 되었습니다. 이를 위해 서버의 확장 방법에 대한 공부를 시작하였습니다. 서버를 확장하는 방법은 크게 수직적 확장(scale-up)과 수평적 확장(scale-out)이 있습니다. 수직적 확장은 서버 한 대의 성능 자체를 ..
HTTP Pull 과 HTTP Push HTTP 데이터 전송은 HTTP Pull과 HTTP Push 두가지로 나뉜다. HTTP Pull 항상 client의 request에서 통신이 시작된다는 사실을 기억하자. 이것이 바로 HTTP Pull이다. (default 임) 서버에서 데이터를 받아오는 방법은 두가지가 있다. HTTP GET request를 이용하는 방법 (사용자가 이벤트를 발생시킨다.) AJAX를 이용한다. 사용자 개입이 없이 동적으로 호출하는 방법이다. (AJAX를 정기적으로 호출하는 것을 polling이라고도 한다.) 모든 request는 TTL(Time To Live)을 가진다. TTL은 브라우저 별로 다르다. 보통 30 ~ 60초다. TTL안에 response를 못받으면 브라우저가 연결을 강제로 해제한다. 이렇게 안하면 연결이 ..
웹 아키텍처 https://www.educative.io/path/scalability-system-design 웹 아키텍처는 뭘까? 웹 서비스를 제공하기 위해 필요한 컴포넌트 (DB, Backend Server, load balancers, ...) 들의 협동조합이다. 이 중 client-server architecture는 2-tier, 3-tier, n-tier 모델이 취하는 웹의 기본 구조이다. 또한 client-server 구조는 request-response 모델로 동작한다. 이전 포스트에서 client-server 구조에 대해서만 간단히 정리 했는데 구체적으로 어떤 특징들을 가지고 있는지 알아보자. client User Interface를 포함한다. presentation layer이다. 애플리케이션을 ..
소프트웨어 아키텍처의 계층과 장단점 https://www.educative.io/path/scalability-system-design 계층이 뭘까? 계층은 애플리케이션 혹은 서비스를 구성하는 컴포넌트들의 논리적인 분리이다. 여기서 말하는 분리는 코드레벨이 아니라 물리적인 위치의 분리이다. 논리적인 분리인데 어째서 물리적인 분리인지 헷갈린다. 분리의 단위가 되는 컴포넌트는 다음과 같다. DataBase Backend application server User Interface Messaging Caching 위의 나열된 컴포넌트들이 몇 개로 쪼개져 있는지에 따라 여러가지 애플리케이션 모델이 나눠지는데 각 모델의 장단점을 빠르게 알아보자. Single-Tier Applications User Interface, DataBase, Backen..