Learn/Architecture
-
Architectural Styles (5) - DistributedLearn/Architecture 2023. 4. 10. 00:00
Category Style Sub-style Distributed Multi-tier Client-Server Broker Dispatcher Service-Oriented Microservice Edge-Based ## Multi-tier 어떻게 구성하냐에 따라 2-tiered, 3-tiered 등 N-tiered로 구성 가능하다. 2-tiered가 아래의 Client-Server 구조이고, 3-tiered는 아래 그림과 같다. 참고로 Layer는 논리적인 구분을, Tier는 물리적인 구분을 뜻한다. 장점 비즈니스 로직에 변화가 있어도 미들 티어 정도로 한정된다. (Modifiability) 서버를 확충하여 처리량 개선 가능 (Performance) 중요한 자원이 있다면 Tier 분리를 할 수 있다. ..
-
Architectural Styles (4) - HierarchicalLearn/Architecture 2023. 4. 9. 21:24
Category Style Sub-style Hierarchical Main-Subroutine Master-Slave Layered Virtual Machine Microkernel # Hierarchical Architecture 말그대로 계층 구조이다. ## Main-Subroutine Style 프로시저가 계층 구조로 구성되어있으며 단일 쓰레드이다. Main과 Sub은 강한 결합으로 구성된다. 장점 sub routine간은 분리되어 테스트가 용이하다. (Testability) 단점 전역 데이터를 쓰는 경우가 많으므로 보안이 취약하다. (Security) 전역 데이터에 변경이 있을 경우 전체에 영향을 미친다. (Modifiability) Main과 Sub이 강하게 결합되므로 가용성이 낮다. (Ava..
-
Architectural Styles (3) - Implicit Invocation, Interaction OrientedLearn/Architecture 2023. 4. 9. 00:31
Category Style Implicit Invocation Event Based Message Based Interaction Oriented Model-View-Controller Presentation-Abstraction-Control # Implicit Invocation Architecture 직접 프로시저를 호출하는 방식이 아닌 구조가 여기에 해당된다. ## Non-buffered Event-Based Style observer pattern이라고 보면 된다. https://push-and-sleep.tistory.com/49 [Design Pattern] Observer Pattern # 개요 한 쪽의 오브젝트가 변화가 있을 때, 다른 오브젝트들이 노티아야 할 때 사용하는 패턴 Obser..
-
Architectural Styles (2) - Data Flow, Data CenteredLearn/Architecture 2023. 4. 7. 23:04
Category Style Data Flow Batch Sequential Pipe and Filter Process Control Data Centered Shared Repository Blackboard # Data Flow Architecture 데이터를 연속적으로 처리하는 시스템에 적합한 구조이다. 프로세스가 진행되는 중간에는 인터렉션이 없다는 특징이 있다. 여기서는 복잡하지 않은 선형적인 구조만 살펴본다. 구성 요소는 아래와 같다. 컴포넌트 - Data Transformer 커넥터 - Data Channel로 I/O에 관련된 것들, buffer 등 ## Batch Sequential 독립적인 프로그램을 순차적으로 실행하면서 데이터를 처리하는 구조이다. 컴포넌트 : 독립적인 프로그램 커넥터 : ..
-
Architectural Styles (1) - 개요Learn/Architecture 2023. 4. 7. 00:37
다양한 종류의 Architectural Style과 각각의 Quality Attribute에 대해 살펴보자. # Quality Attribute 품질 속성은 여러 가지 버전이 있는데 아래 정도만 같이 살펴보려한다. 핵심만 살펴보고 넘어가자. Availability (가용성) 시스템이 얼마나 오래 끊김없이 작동하냐에 대한 속성이다. 백업 서버가 있어서 장애가 있어도 24시간 가동된다면 가용성이 높다. Interoperability (상호 운영성) 분산된 환경에서 인터페이스를 통해 정보를 잘 주고받을 수 있는지에 대한 속성이다. 아래와 같이 Mediator가 중재 해 줄 경우 상호 운영성이 높다. Modifiability (변경 용이성) 얼마나 수정이 용이한지에 대한 속성이다. 커플링이 강하면 변경 용이성이..
-
[Design Pattern] MVC PatternLearn/Architecture 2022. 9. 25. 20:46
# 개요 Model-View-Control Pattern Model - application object View - UI Controller - UI가 사용자의 입력에 어떻게 반응하는지 여러 디자인 패턴들이 적용된 Compound Pattern # 구조 View와 Controller(UI)는 API를 통해 Model(Non-UI)에 접근할 수 있다. Non-UI는 UI를 잘 알지 못하게 한다. 같은 데이터로도 여러 UI가 있을 수 있으므로 Non-UI에 비해 UI가 많다. UI쪽이 변화가 있을 때 마다 Non-UI가 영향을 받으면 변경이 너무 잦게 된다. 점선은 실선보다 커플링이 약한 상태를 의미한다. # Patterns in MVC Observer pattern (Model - View) 모델과 뷰 ..
-
[Design Pattern] Bridge PatternLearn/Architecture 2022. 9. 25. 07:58
# 문제 상황 사각형을 그리는 라이브러리가 있다고 가정해보자. (Drawing Program) 그리는 방식이 두 가지가 있다고 하면 아래와 같이 abstract class를 구성할 것이다. 그런데 추후에 사각형 뿐만 아니라 원도 추가될 것으로 예상된다면? 아래와 같이 Shape이라는 클래스로 추상화를 한 단계 더 할 수 있다. 문제는 다른 종류의 도형이 계속 추가된다고 가정했을 때 도형 하나 당 3개의 클래스가 늘어나므로 클래스가 너무 많아질 수 있다. # 해결 원인: Abstraction과 Implementation의 커플링이 너무 심하다. 해결: Abstraction과 Implementation을 분리한다. 공통적인 것은 abstract class에, variation은 concrete class에 ..
-
[Design Pattern] Composite PatternLearn/Architecture 2022. 9. 25. 01:16
# 개요 계층(Hierarchy)이 있는 객체들을 동일하게 다루기 위해 사용하는 패턴 위와 같이 계층이 있을 경우 아래와 같이 계층에 따라 다르게 핸들링하지 않기 위한 패턴이다. if ( current instanceOf(MenuItem)) // … handle Menu Item in a way else if (o instanceOf(Menu)) // … handle Menu in another way # Composite Pattern 아래와 같이 Decorator Pattern과 유사하게 디자인 할 수 있다. 클라이언트는 MenuComponent를 통해 MenuItem과 Menu에 동일하게 접근할 수 있다. Decorator Pattern처럼 Association, Inheritance를 모두 가지고..