CS Study44 [소프트웨어 아키텍처 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. [소프트웨어 아키텍처 101] Ch.10 레이어드 아키텍처 스타일 레이어드 아키텍처(layered architecture, n티어(n-tiered) 아키텍처)는 가장 흔한 아키텍처 스타일 중 하나이다. 단순하고 대중적이면서도 비용도 적게 들어 모든 애플리케이션의 사실상 표준 아키텍처이다. 시스템을 설계하는 조직은 그 조직의 소통 구조를 그대로 복제한 듯 설계할 수밖에 없다는 콘웨이의 법칙을 떠올려보면, 레이어드 아키텍처는 애플리케이션을 개발하는 아주 자연스러운 방법이다. 그러나 레이어드 아키텍처 스타일은 묵시적 안티패턴, 우발적 아키텍처 안티패턴 등의 몇몇 아키텍처 안티패턴의 범주에 속한다. 1. 토폴로지 레이어드 아키텍처에서 내부 컴포넌트는 논리적으로 수평한 레이어들로 구성되며, 각 레이어는 애플리케이션에서 주어진 역할을 수행한다. 레이어의 개수와 유형은 특별한 제한.. 2024. 1. 11. [소프트웨어 아키텍처 101] Ch. 9 기초 아키텍처 스타일의 명칭은 숙련된 아키텍트들 사이에서 간명하게 지칭할 수 있는 이름으로 붙여 놓았다. 예를 들어, 한 아키텍트가 레이어드 모놀리스에 대해 이야기할 경우, 그의 목표는 구조적인 측면과 어떤 종류의 아키텍처 특성이 알맞는지 살펴보고 통상적인 배포 모델과 데이터 전략 등 다양한 정보를 이해하는 것이다. 따라서 아키텍트는 기초적인 아키텍처 스타일의 명칭에 익숙해져야 한다. 1. 기초 패턴 소프트웨어 아키텍처의 역사를 통틀어 끊임없이 타나타고 또 나타나는 패턴이 있는데, 이런 패턴들은 코드, 배포, 또는 아키텍처의 다른 부분을 구성하는 시야를 넓혀준다. 예를 들어, 레이어는 기능에 따라 서로 다른 관심사를 분리하는 개념으로, 소프트웨어 자체만큼이나 오래되었다. 1.1 진흙 잡탕 진흙잡탕은 요즘에는 .. 2024. 1. 11. [소프트웨어 아키텍처 101] Ch.8 컴포넌트 기반 사고 1. 컴포넌트 범위 개발자는 컴포넌트 개념을 다양한 팩터에 세분화하는 것이 유용하다고 생각한다. 컴포넌트는 아티팩트를 한데 묶어 필요시 중첩시켜 계층화하는, 언어에 특정한 매커니즘을 제공한다. 가장 단순한 컴포넌트는 클래스(또는 비객체 지향 언어의 함수)보다 한 단계 높은 수준의 모듈로 코드를 래핑하는 것이다. 이 단순한 래퍼를 보통 라이브러리(library)라고 한다. 컴포넌트 아키텍처에서 서브시스템이나 레이어 형태로도 나타나며, 많은 이벤트 프로세서를 위한 배포 가능한 작업 단위이다. 서비스는 또 다른 종류의 컴포넌트로서 자신의 주소 공간에서 실행되며, TCP/IP 같은 저수준 네트워크 프로토콜이나 REST, 메시지 큐 같은 고수준 포맷을 통해 통신한다. 컴포넌트는 아키텍처의 근본적인 모듈성을 구성하.. 2024. 1. 11. 이전 1 2 3 4 5 6 7 8 다음