본문 바로가기

Binary Book Club17

[소프트웨어 아키텍처 101] Ch. 15 공간 기반 아키텍처 스타일 웹 기반 비지니스 애플리케이션은 대부분 일반적인 요청 흐름을 따라간다. 브라우저에서 요청을 보내면 웹 서버, 애플리케이션 서버, 데이터베이스 서버 순서로 도달한다. 이런 패턴은 유저가 많지 않으면 별 문제없지만 유저 수가 늘어나면 점점 병목 현상이 나타나기 시작한다. 처음에는 웹 서버 레이어에서 발생하다가 나중에는 애플리케이션, 데이터베이스 서버 레이어에서도 나타난다. 병목 현상의 가장 일반적인 해결 방법은 웹 서버 확장이다. 이 방법은 비교적 쉽고 저렴하며 효과적이지만, 유저 부하가 높을 때 웹 서버 레이어를 확장하면 병목점은 다시 애플리케이션 서버로, 데이터베이스 서버로 병목점이 이동한다. 동시 유저 부하가 많은 대용량 애플리케이션은 데이터베이스의 동시 처리 가능한 트랜잭션 수가 최종 제약조건이 되는.. 2024. 1. 18.
[소프트웨어 아키텍처 101] Ch. 14 이벤트 기반 아키텍처 스타일 이벤트 기반 아키텍처(event-driven architecture)는 확장성이 뛰어난 고성능 애플리케이션 개발에 널리 쓰이는 비동기 분산 아키텍처 스타일이다. 적응성이 좋아 소규모 애플리케이션부터 크고 복잡한 애플리케이션까지 두루 사용할 수 있다. 이벤트를 비동기 수신/처리하는 별도의 이벤트 처리 컴포넌트들로 구성되며, 스탠드얼론 아키텍처 스타일로 사용하거나 다른 아키텍처 스타일(ex. 이벤트 기반 마이크로 서비스 아키텍처)에 내장할 수도 있다. 애플리케이션은 대부분 요청 기반 모델(request-based model)을 따른다. 이 모델에서는 어떤 액션을 수행하도록 시스템에 요청하면 요청 오케스트레이터가 접수한다. 요청 오케스트레이터는 보통 유저 인터페이스이지만 API 레이어나 엔터프라이즈 서비스 버.. 2024. 1. 18.
[소프트웨어 아키텍처 101] Ch. 13 서비스 기반 아키텍처 스타일 서비스 기반 아키텍처(service-based architecture)는 마이크로서비스 아키텍처 스타일의 일종으로, 아키텍처가 유연해서 가장 실용적인 아키텍처 스타일 중 하나이다. 마이크로서비스나 이벤트 기반 아키텍처와 마찬가지로 분산 아키텍처지만 비교적 덜 복잡하고 비용이 많이 들지 않아서 많은 비지니스 관련 애플리케이션에 널리 채택된 아키텍처이다. 1. 토폴로지 서비스 기반 아키텍처의 기본 토폴로지는 각각 따로 배포된 유저 인터페이스와 원격 서비스, 그리고 모놀리스 데이터베이스로 이루어진 대규모 분산 레이어 구조이다. 이 아키텍처 스타일에서 서비스는 큼지막한 단위로 분리해 별도로 배포하는 애플리케이션의 일부이다(보통 도메인 서비스라고함). 서비스를 배포하는 방식 자체는 여느 모놀리식 애플리케이션과 동.. 2024. 1. 15.
[소프트웨어 아키텍처 101] Ch. 12 마이크로커널 아키텍처 스타일 이미 수십 년 전에 만들어진 마이크로커널 아키텍처(microkernel architecture, 플러그인 아키텍처라고도 함)는 오늘날에도 널리 쓰이고 있다. 이 아키텍처 스타일은 (단일 모놀리식 배포 단위로 패키징해서 다운로드 및 설치가 가능하며, 보통 고객 사이트에서 서드파티 제품으로 설치되는) 제품 기반 애플리케이션에 적합하며, 비제품 고객 비즈니스 애플리케이션에도 많이 사용된다. 1. 토폴로지 마이크로커널 아키텍처 스타일은 코어 시스템(core system)과 플러그인 컴포넌트(plug-in component)라는 두 가지 아키텍처 요소로 구성된 비교적 단순한 모놀리식 아키텍처이다. 애플리케이션 로직은 독립적인 플러그인 컴포넌트와 기본 코어 시스템에 골고루 분산되어 확장성, 적응성, 애플리케이션 기.. 2024. 1. 15.
[스터디] GraphQL이란? REST API에서의 문제점 오버페칭과 언더페칭 REST API 시스템에서는 요청의 목적에 맞게 엔드포인트와 응답할 데이터들을 미리 정의한다. [GET] 메서드로 유저 정보를 받아오고 싶다면, 대체로 서버 도메인 끝에 'user/[userId]'와 같은 경로 변수를 붙여서 요청을 보낸다. 이때 유저 정보를 보여주는 UI가 페이지마다 조금씩 다를 수 있다. 메인 화면에서는 유저의 닉네임만 보여주고, 계정 설정 화면에서는 닉네임과 이메일을 모두 보여주는 경우가 그렇다. 필요한 데이터의 형태가 다르니까 API의 엔드포인트를 두 개로 나누어야 할까? 만약 그렇다면 새로운 엔드포인트의 경로 변수는 무엇으로 정해야 할까? 이 방식은 모호하고 비효율적이다. 데이터에 포함할 필드를 유연하게 바꿀 수 없어서 불필요한 값.. 2024. 1. 15.
[스터디] 맵 리듀스란? 소프트웨어 아키텍처 101을 읽다가 맵 리듀스에 대해 궁금해져서 알아보게 되었다. 맵 리듀스(Map Reduce) 구글에서 대용량 데이터 처리를 분산 병렬 컴퓨팅에서 처리하기 위한 목적으로 제작하여 2004년 발표한 소프트웨어 프레임워크 한 명이 4주 작업할 일을 4명이 나누어 1주에 끝내는 것 이 개념이 하둡에서 사용하는 병렬 처리 개념이고, 위에서 나온 4명의 작업자를 클러스터라고 함 * 클러스터 : 공통의 목표를 위해 작동하는 컴퓨터 또는 애플리케이션들의 그룹 맵 리듀스 = 맵(Map) + 리듀스(Reduce) 빅데이터에서 프로세스는 최대한 단순해야 한다. RDBMS(관계형 데이터베이스)처럼 처리의 순서가 필요하거나 데이터 처리 실패로 인해 다시 되돌아가는 복잡한 연산은 어렵다. 프로세스를 간단히 .. 2024. 1. 11.