본문 바로가기
반응형

클린아키텍처19

멀티 프로세스 대세는 msamas는 여러 머신에 여러 process가 있는 상태독립적인 기능들을 process로 만들어서 실행한다. process간의 통신방법1. Http+json 은 쉬운데 느리다방법2. Tcp+Custom protocol 은 제공된 통신 라이브러리로 빠르다 process 단위정답은 없다.너무 쪼개면 시스템 복잡도가 상승하고 너무 크게 만들면 쪼갤 때 고생해야 한다.같은 프로세스 기능에 따라 다른 머신으로 분리가 가능하다. 2024. 10. 13.
[공유] (번역) 우리들을 위한 디자인 패턴 디자인 패턴 : 반복되는 문제에 대한 해결책 : 특정 문제를 해결하는 방법에 대한 지침 주의사항 억지로 적용하지 말기 문제의 해결책이며 문제를 찾는 해결책은 아니다 디자인 패턴 종류 생성 / 구조 / 행동 생성 패턴 객체를 인스턴스화 하는 방법에 초점을 맞춘다. 빌더 Builder 생성자의 오염을 방지하면서 객체의 다양한 버전을 생성할 수 있게 해주는 패턴 한 객체에 여러가지 버전이 있을 때 or 객체의 생성에 많은 단계가 포함될 때 유용 팩토리 패턴과 주요 차이점은 팩토리 패턴은 생성이 한단계인 경우에 사용되는 반면 빌더 패턴은 생성이 여러 단계인 경우에 사용된다. 점층적 생성자 안티 패턴 해당 코드처럼 생성자의 매개변수가 많아서 이해하기 어려워질 수 있다. constructor(size: string.. 2023. 11. 7.
모놀리식 아키텍처의 한계 마이크로 아키텍처를 알기전에 모놀리식 아키텍처도 알아야할 것 같다. 모놀리식 아키텍처 : 하나의 애플리케이션 안에 모든 컴포넌트를 포함하는 구조 장점 하나의 애플리케이션으로 구성했기 때문에 배포가 쉽다 로드밸런서를 활용해 인스턴스만 늘리면 부하 문제도 해결 가능하다. 단점 분산처리가 비효율적이다. 전체 코드를 이해해야하고 코드를 관리하기 어렵다. 기능별로 코드가 독립적이지 않아 새로운 기술을 적용하기 어렵다. 분산 아키텍처의 필요성 코드수정에 부담이 없어야 하고 새로운 기능을 추가할 때는 기존 코드에 영향을 주지 않아야 한다. 필요한 기능만 분산 처리할 수 있어야 한다. 기능별로 최적화된 기술을 적용할 수 있어야 한다. 참고 Node.js 마이크로 서비스 코딩공작소 - 정대선 2023. 6. 5.
디자인 패턴의 종류 종류 데코레이션 패턴 : 객체를 감싸서 새로운 행동을 제공한다. 상태 패턴 : 상태를 기반으로 하는 행동을 캡슐화한 다음 위임으로 필요한 행동을 선택한다. 반복자 패턴 : 컬렉션이 어떤 식으로 구현되었는지 드러내지 않으면서도 컬렉션 내에 있는 모든 객체를 대상으로 반복 작업을 처리할 수 있게 한다. 퍼사드 패턴 : 일련의 클래스에 간단한 인터페이스를 제공한다. 전략 패턴 : 교환 가능한 행동을 캡슐화하고 위임으로 어떤 행동을 사용할지 결정한다. 프록시 패턴 : 상태가 변경되면 다른 객체들에게 연락을 돌릴 수 있게 해준다. 팩토리 메소드 패턴 : 서브클래스에서 생성할 구상 클래스를 결정한다. 어댑터 패턴 : 객체를 감싸서 다른 인터페이스를 제공한다. 옵저버 패턴 : 객체를 감싸서 그 객체로의 접근을 제어한.. 2023. 3. 19.
우아콘2022 - 아키텍처 발표 발표 세션명: 기획자님들! 개발자가 아키텍처에 집착하는 이유, 쉽게 알려드립니다 발표자: 김현수 주문접수채널팀 “띵~동~ 배달의민족 주문~” 간혹 식당에 있으면 울리는 그소리! 개발을 담당하고 계신다고한다~ 오.. 아키텍처가 무엇인지 목표가 무엇인지 설명한다. 클린아키텍처 책을 읽고 블로그에 포스팅한적이 있는데, 익숙한 다이어그램이 나와서 반가웠다.😙 위의 아키텍처 장점 1. 화면을 변경하거나, 중계서버 API 구조가 변경되어도 도메인 계층의 업무 규칙이 영향을 받지 않는다. 2. 의존성을 낮추면 각 요소를 독립적으로 테스트 가능하다 아키텍처의 목표는 도메인을 외부의 세부사항 변경으로부터 분리하여 보호하는 것 발표영상 2022. 10. 21.
[클린아키텍처] 34장 빠져있는 장 아키텍처 관점에서 볼 때 데이터베이스는 엔티티가 아니다 데이터베이스는 세부사항이라서 아키텍처 구석요소 수준으로 끌어올릴 수 없다. 데이터베이스는 데이터에 접근할 방법을 제공하는 유틸리티다. 관계형 데이터베이스 데이터 접근 및 관리 시스템 1) 파일 시스템 - 문서 전체를 자연스럽고 편리하게 저장하는 방법을 제공한다. 2) 관계형 데이터베이스 관리 시스템 RDBMS - 내용을 기반으로 레코드를 자연스럽고 편리하게 찾는 방법을 제공한다. 2022. 3. 21.
[클린아키텍처] 30장 ~ 32장 데이터베이스, 웹, 프레임워크는 세부사항이다, 33장 사례 연구 아키텍처 관점에서 볼 때 데이터베이스는 엔티티가 아니다 데이터베이스는 세부사항이라서 아키텍처 구석요소 수준으로 끌어올릴 수 없다. 데이터베이스는 데이터에 접근할 방법을 제공하는 유틸리티다. 관계형 데이터베이스 데이터 접근 및 관리 시스템 1) 파일 시스템 - 문서 전체를 자연스럽고 편리하게 저장하는 방법을 제공한다. 2) 관계형 데이터베이스 관리 시스템 RDBMS - 내용을 기반으로 레코드를 자연스럽고 편리하게 찾는 방법을 제공한다. 33장 사례 연구 : 비디오 판매 제품 개인과 기업에게 비디오를 웹을 통해 판매한다. 유스케이스 분석 단일 책임 원칙에 따르면 이들 네 액터가 시스템이 변경되어야 할 네 가지 주요 원인이다. 신규 기능을 추가하거나 기존 기능을 변경해야 한다면, 그 이유는 반드시 이들 액터 .. 2022. 3. 20.
[클린아키텍처] 29장 클린 임베디드 아키텍처 소프트웨어를 구축하는 활동 1) 먼저 동작하게 만들어라 -> 소프트웨어가 동작하지 않는다면 사업은 망한다. 2) 그리고 올바르게 만들어라 -> 코드를 리팩터링해서 당신을 포함한 나머지 사람들이 이해할 수 있게 만들고 요구가 변경되거나 요구를 더 잘 이해하게 되었을 때 코드를 개선할 수 있게 만들어라 3) 그리고 빠르게 만들어라 -> 코드를 리팩터링해서 요구되는 성능을 만족시켜라 앱-티튜드 테스트 App-titude test 앱이 동작하도록 만드는 것 -> 프로그래밍에는 단순히 앱을 동작하도록 만드는 것보다 중요한 것이 많다. 타깃-하드웨어 병목현상 target-hardware bottleneck - 임베디드가 지닌 특수한 문제: 임베디드 코드가 클린 아키텍처 원칙과 실천법을 따르지 않고 작성된다면, 테스.. 2022. 3. 19.
[클린아키텍처] 28장 테스트 경계 인수 테스트, 기능 테스트, Cucumber 테스트, TDD 테스트, BDD 테스트, 컴포넌트 테스트 등등 테스트 종류가 많다. But 아키텍처 관점에서의 테스트는 모두 동일하다. 시스템 컴포넌트인 테스트 테스트는 의존성 규칙을 따른다. 테스트는 독립적으로 배포 가능하다. - 테스트는 테스트 시스템에만 배포하며 상용 시스템에는 배포하지 않는다. 테스트는 시스템 컴포넌트 중에서 가장 고립되어 있다. - 테스트의 역할은 운영이아니라 개발을 지원한다. 깨지기 쉬운 테스트 문제 Fragile Tests Problem 시스템에 강하게 결합된 테스트라면 시스템이 변경될 때 함께 변경되어야 한다. 시스템의 공통 컴포넌트가 변경되면 수천개의 테스트가 망가진다. -> 테스트를 고려해서 설계해야 한다. -> 시스템과 테스.. 2022. 3. 19.
728x90
반응형