본문 바로가기
728x90

아키텍처4

[번역]Inside NGINX: How We Designed for Performance & Scale Nginx는 설계 방식 덕분에 우수한 웹 퍼포먼스를 보이고 있다. 수 많은 WS와 WAS가 스레드 또는 프로세스 기반 아키텍처를 사용하는 반면, nginx는 접속을 수백 수천개의 동시 접속으로 확장할 수 있는 정교한 event-driven 아키텍처를 사용하고 있다. Inside NGINX 는 고수준 프로세스 아키텍처부터 저수준으로 내려가면서 Nginx가 여러개의 커넥션을 싱글 프로세스로 처리하는 과정을 서술하고 있다. 이 글은 한발 더 나아가 더 디테일하게 Nginx의 동작 과정을 서술하려 한다. Setting the Scene - The NGINX Process Model Nginx의 설계를 이해하기 위해선 Nginx가 어떻게 동작하는지 알아야 한다. Nginx는 하나의 마스터 프로세스와 워커프로세스,.. 2022. 8. 11.
3부(7, 8, 9, 10, 11 장) 설계 원칙 좋은 소프트웨어 시스템은 깔끔한 코드로 부터 시작한다. 코드가 깔끔하지 않으면 좋은 아키텍처는 무용지물이다. 깔끔한 코드를 작성하는 원칙인 SOLID를 살펴보자. SOLID는 함수와 데이터로 이루어진 집합을 배치하는 방법과 이들을 서로 결합하는 방법을 설명한다. SOLID의 목적은 중간 수준의 소프트웨어 구조가 아래와 같은 점들을 만족하게 하는 것이다. 1. 변경에 유연하다. 2. 이해하기 쉽다. 3. 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트 기반이 된다. 여기서 중간 수준이란 모듈 수준을 의미한다. 즉, 코드 수준보다는 조금 상위에 적용되는 원칙이며 모듈과 컴포넌트 내부에서 사용되는 소프트웨어 구조를 정의하는 데 도움을 준다. 7장. SRP: 단일 책임 원칙 많은 프로그래머들은 SRP를 단 하.. 2022. 5. 28.
2부(3, 4, 5, 6장). 벽돌부터 시작하기: 프로그래밍 패러다임 3장 패러다임 개요 구조적 프로그래밍 무분별한 점프(goto 문)이 해롭다는 사실과 함께 재안된 최초의 패러다임이다. 무분별한 점프 대신 조건문과 반복문을 상요한다. 구조적 프로그래밍은 다음과 같이 요약할 수 있다. 구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과한다. 객체 지향 프로그래밍 함수 호출 스택 프레임을 힙으로 옮기면, 함수 호출이 반환되어도 함수에서 선언된 지역 변수가 오랫동한 유지된다. 이런 함수가 클래스의 생성자가 되었고, 지역변수가 인스턴스, 중첩 함수가 메서드가 되었다. 함수 포인터를 특정 규칙에 따라 사용하는 과정은 다형성이 되었다. 객체 지향 프로그래밍은 다음과 같이 요약할 수 있다. 객체 지향 프로그래밍은 제어흐름의 간접적인 전환에 대해 규칙을 부과한다. 함수형 .. 2022. 5. 15.
소프트웨어 아키텍쳐 정의: 외부에서 인식할 수 있는 특성이 담김 소프트웨어의 기본구조 필요 요소: 1. 구성요소(모듈, 컴포넌트, 서비스, 객체 등) 2. 구성요소들 사이의 관계 3. 구성 요소들이 외부에 드러내는 속성 4. 구성 요소들과 주변 환경 사이의 관계 5. 구성 요소들이 제공하는 인터페이스 6. 구성 요서들의 협력 및 조립 방법 특징: 1. 개발할 소프트웨어에 대한 전체적인 구조를 다룬다 2. 소프트웨어를 이루고 있는 여러 구성요소(컴포넌트, 서브시스템)를 다룬다 3. 구성 요소들이 인터페이스를 통해서 어떻게 상호작용하는지를 정의해야 한다. 4. 세부 내용보다는 중요한 부분만을 다룬다 5. 시스템 설계와 개발 시 적용되는 원칙과 지침이 있어야 한다. 설계시 고려사항 1. 의사소통 도구로 활용할 수 있어야 한다. .. 2021. 4. 27.
728x90