전체 글 (17) 썸네일형 리스트형 왜 계층형 아키텍처로는 충분하지 않은가 계층형 아키텍처란? 웹 -> 도메인 -> 영속성 계층으로 구성된 전통적인 웹 애플리케이션 구조를 3계층 아키텍처라고 한다. 1. 웹 계층에서는 요청을 받는다. 2. 그 요청을 도메인 계층에 있는 서비스로 보내서 비즈니스 로직을 수행한다. 3. 도메인 엔티티의 조회 및 저장을 위해서 영속성 계층을 호출한다. 이 계층형 아키텍처는 굉장히 전통적인 형식이다. 전통적이라는 것은 오랜 시간에 걸쳐 장점을 인정받고 살아남았다는 뜻이다. 계층형 아키텍처는 각 계층에 독립적으로 로직을 작성할 수 있는 견고함을 가진다는 장점이 있다. 하지만 이 계층형 아키텍처의 문제점은 바로 변화에 대응하기 어려운 소프트웨어가 될 수 있다는 것이다. 데이터베이스에 의존성이 높다는 것 애플리케이션의 존재 목적은 비즈니스의 규칙과 정책을 .. 객체지향설계원칙(SOLID) ⑤ - DIP DIP DIP는 Dependency Inveresion Principle, 의존성 역전 원칙을 말합니다. In object-oriented design, the dependency inversion principle is a specific methodology for loosely coupling software modules. When following this principle, the conventional dependency relationships established from high-level, policy-setting modules to low-level, dependency modules are reversed, thus rendering high-level modules indepe.. 객체지향설계원칙(SOLID) ① - SRP SRP The single-responsibility principle (SRP) is a computer programming principle that states that "A module should be responsible to one, and only one, actor." The term actor refers to a group (consisting of one or more stakeholders or users) that requires a change in the module. Robert C. Martin, the originator of the term, expresses the principle as, "A class should have only one reason to ch.. 왜 그래프 데이터베이스를 사용하는가? What is a Graph Database? A graph database stores nodes and relationships instead of tables, or documents. Data is stored just like you might sketch ideas on a whiteboard. Your data is stored without restricting it to a pre-defined model, allowing a very flexible way of thinking about and using it. 그래프 데이터베이스는 노드와 관계를 저장한다. 데이터는 화이트보드에 아이디어를 스케치하듯이 저장되고, 이미 정의된(pre-defined) 모델(table, documents)에.. keycloak : id of client 와 client id 값의 차이 keycloak 을 IAM(Identity and Access Management)의 목적으로 개발에 사용하게 되면, 이제 단순히 앱에 연결을 하는 것에서 그치는 것이 아니라, API 단에서 keycloak 에 직접 REST API 를 날려야 되는 필요성이 생기게 된다. 그럴 때, 우리는 공식문서(20.0.3 버전)를 확인하게 되는데, 오늘은 여기서 굉장히 이상한 단어를 발견하게 되어서, 그리고 이것 때문에 한 15분 이상은 헤맨 것 같아서 기록으로 남겨두게 되었다. 한국어로 해당 부분을 정리한 글은 없어서, 혹시나 누군가의 개발 시간을 줄여줄 수 있지 않을까 하는 생각에 글을 작성해본다. 여기에 보면, 이렇게 id of client 라고 되어있는 것이 있다. 그리고 not client-id 라고도 되어.. Relational Databases Lack Relationships RDB는 관계를 표현하기 어렵다 The rise in connectedness translates in the relational world into increased joins, which impede performance and make it difficult for us to evolve an existing database in response to changing business needs. (테이블 간의) 연결성 증가는 JOIN 쿼리의 증가로 이어지며, 이는 수시로 변화하는 비즈니스적 요구에 맞게 기존의 데이터베이스를 변경시키는 것을 어렵게 만들고 또한 성능 저하의 원인이 된다. MySQL(RDB)를 현업에서 사용하면서 아래와 같은 문제들을 실제로 겪고 있다. 단순히 DB의 동작을 위해서 외래.. DDD 개발 이해하기 : 도메인(Domain)과 애그리거트(Aggregate) 현업에서 서버들이 MSA 아키텍처로 구성되어 있기 때문에, 자연스럽게 이 MSA를 탄생시킨 도메인 주도 개발, DDD에 대해서도 알아야 할 필요성이 생겼다. 또한, 이 DDD 에서 아키텍처의 핵심은 도메인 객체를 지켜내는 것이다. 그리고 이 도메인 객체를 잘 지켜내고 관리하기 위해서 헥사고날 아키텍처를 적용하는 것이 좋다라는 선배 개발자의 말을 듣고, 헥사고날 아키텍처를 현재 담당하고 있는 서버 구조에 적용하기 위해서라도 먼저 DDD 자체에 대해 공부를 할 필요성이 있다고 생각했다. 그래서 이번에 [도메인 주도 개발 시작하기 : DDD 핵심 개념 정리부터 구현까지] 책을 읽어보며 정리하게 되었다. 도메인(Domain)이 무엇인가요? 도메인은 소프트웨어로 해결하고자하는 문제의 영역을 말한다. 예를 들어, .. 헥사고날 아키텍처(Hexagonal Architecture) 란? 우선, 간단하게 위키피디아에서 어떻게 헥사고날 아키텍처(Hexagonal Architecture)에 대해 설명하고 있는지 살펴보는 것이 좋을 것 같아 작성하게 되었습니다. 헥사고날 아키텍처(Hexagonal Architecture) 란? The hexagonal architecture, or ports and adapters architecture, is an architectural pattern used in software design. It aims at creating loosely coupled application components that can be easily connected to their software environment by means of ports and adapters.. 이전 1 2 3 다음