현수의 제 2의 뇌
article thumbnail
API Gateway란?? [ Micro Service ]
Architecture 2023. 7. 20. 10:40

API Gateway 최근 많은 기업들이 독립적인 기능을 수행하는 Mircro Service가 여러개로 구성된 MSA가 많이 사용되고 있습니다. 하지만 여기서 MIcro Service가 50, 100 그 이상이 된다면 어떨것 같나요? 이 많은 서비스의 엔드포인트를 관리하기 힘들것이고 서비스마다 인증과 인가 과정이 있다면, 이것또한 중복이 된다는 문제점이 있습니다. 이러한 문제점을 해결하기 위해 API Gateway가 등장하게 되었습니다. API Gateway 는 클라이언트와 서비스 사이에서 클라이언트의 요청을 받고 설정에 따라 각 엔드포인트로 대신 요청을 보냅니다. 응답을 받으면 다시 클라이언트에게 응답을 보내는 프록시 역할을 합니다. API Gateway 는 클라이언트의 요청을 라우팅해주는것 뿐만 아니..

article thumbnail
클린 아키텍처가 뭘까?? [ Clean Architecture, 개념 ]
Architecture 2023. 7. 11. 17:16

아키텍처란? [ Architecture ] 아키텍처라는 용어는 건축물 설계에 사용됩니다. 소프트웨어에서는 약간 다른 의미를 가집니다. 소프트웨어에서의 아키텍처는 시스템의 전체적인 구조와 주요 구성 요소, 그리고 구성 요소간의 관계를 말합니다. 소프트웨어 아키텍처란? [ Software Architecture ] 앱을 더 부드럽고 유연하게 설계하는 것을 소프트웨어 아키텍처라고 합니다 소프트웨어 아키텍처를 사용해서 프로그래머의 생산성을 높이는 설계 방법을 말합니다. 클린 아키텍처 [ Clean Architecture ] 클린 아키텍처를 사용하면, 더 효율적인 프로그램 구현이 가능할 것 2012년에 Uncle Bob 아저씨는 새로운 소프트웨어 아키텍처를 발표했습니다. 클린 아키텍처를 사용해서 계층을 분리해 더..

article thumbnail
헥사고날 아키텍처가 뭘까?? [ Hexagonal Architecture, Port & Adapter Pattern ]
Architecture 2023. 7. 9. 20:55

헥사고날 아키텍처를 확장성이 좋고 결합도가 낮아 MSA 아키텍처를 구성하는데 있어서 적합한 아키텍처라고 할 수 있습니다! 헥사고날 아키텍처는 Ports and Adapter 패턴이라고도 하며 Layered Architecture의 문제를 보완하기 위해 생겨난 아키텍처 입니다. Layered Architecture의 문제 경직성 계층형 아키텍처는 코드 변경이 일어났을때 다른 계층으로 쉽게 전파될 수 있습니다. 예를 들어 데이터베이스 스키마가 바뀌었을때 비즈니스 로직, 데이터 엑세스 계층 등 다른 계층까지 전파될 수 있어 유지보수를 어렵게 만듭니다. 높은 결합도 계층형 아키텍처에서는 상위 계층이 하위 계층에 강하게 의존하게 됩니다. 이로 인해 변경이 어려워지고, 테스트를 어렵게 합니다. Presentatio..

MSA 사용하기 위해 필요한 패턴들 [ MSA, 패턴, 데이터쿼리, 가시성 패턴, 신뢰성 패턴 ]
Architecture 2023. 7. 5. 11:50

데이터 쿼리 패턴 MSA 소프트웨어 아키텍처를 설계하면서 생긴 "데이터 쿼리"의 어려움을 해결하기 위한 패턴 API Aggregation 패턴 필요한 데이터를 얻어오기 위해서, 분리된 서비스들 각각에 각 도메인에 대한 데이터를 요청 후 필요에 맞게 Aggregation(조합) 한다. CQRS 패턴 Command(Write, Update, Delete) 작업과, Query(Read) 작업의 Endpoint를 분리하고 Command 에서 발생된 데이터의 변경을 이벤트 발행을 통해 원하는 포맷대로 Query를 위한 전용 데이터 구조를 만들어 이곳에서 복잡한 Query를 담당합니다. 가시성 (Visibility, Observability) MSA 소프트웨어 아키텍처를 설계하면서 생긴 로깅, 모니터링의 어려움(..

article thumbnail
MSA를 언제 사용해야 할까?? [ MSA, 자가진단 해보기 ]
Architecture 2023. 6. 22. 21:22

자가진단 해보기 전환에 대한 필요성, 그리고 가능 여부 판단 해보기 필요성 측면에서의 자가진단 개발, 배포 시 다른 팀의 소스 혹은 공통 모듈 등으로 인한 일정 조율/커뮤니케이션이 방해될 정도인가요? 느려지는 개발, 배포 과정으로 인해 필요한 비즈니스 개발이 지연된 적이 있나요? (Business Capabilities) 단 건의 배포로 인한 전체적인 영향도 파악이 어렵고, 실제로 이로 인해 놓친 부분으로 인해 장애가 빈번하게 발생하나요? 공통적으로 사용하는 모듈 수정 시, 영향도 파악과 커뮤니케이션에 대한 부담이 압박으로 다가오나요? 주요 서비스로 인한 빈번한 DB부하로 인해, 타 서비스에서 영향을 받은 적이 빈번한가요? 가능 여부 측면에 대한 자가진단 엔지니어링 조직에서 MSA 구조와 각 서비스의 통..

article thumbnail
MSA의 등장 [ Micro Service Architecture ]
Architecture 2023. 6. 21. 19:10

모놀리식 아키텍처와 SOA( Service Oriented Architecture ) - 처음 소프트웨어 아키텍처의 시작은 모놀리식 이다. - 그리고 여기서 오는 고통들과 제한적인 환경에서나마 해결하고자 했던 노력에서 나온 아키텍처가 SOA이다. MSA가 나오기 전의 아키텍처.. 모놀리식 - 하나의 어플리케이션이 하나의 서버에 배포 - 단일 코드베이스 - 싱글/멀티 모듈 방식으로 개발은 가능하지만, 근본적으로 하나의 프로세스 SOA - "서비스" 단위로 개발하고, 서비스 간 규격화된 프로토콜(인터페이스)를 사용하여 통신 - 대개 동일한 기술 스택들을 가지고 서비스들을 개발하며, 각 서비스들간이 재사용이 목적 - ESB(Enterprise Service Bus) 라는 개념을 통해, 요청에 대해 어떤 서비스..

article thumbnail
모놀리스 아키텍처 이해하기 [ Monolithic Architecture ]
Architecture 2023. 6. 21. 10:56

모놀리스 아키텍처 ( Monolithic Architecture ) - 모든 종류의 서비스가 하나의 어플리케이션으로 구성되어 있는 아키텍처를 의미한다. 특징 - 하나의 주요 프로세스로 구성 - 모든 서비스가 하나의 DB endpoint를 사용 - 단 한줄만 코드 수정이 되더라도, 모든 어플리케이션의 재배포가 필요 - 싱글 혹은 멀티 모듈로 구성할 수 는 있지만 CI의 단위가 달라질 뿐, CD(배포) 의 범위는 여전히 전체이다. 모놀리스 아키텍처가 일반적이었던 이유 Easy 개발하고 빌드하고 나온 결과를 서버에서 실행시키기만 하면 됐기에 쉽다! No time, No Human Resource 고려할것이 그리 많지 않고 서버 리소스의 효율적인 활용이 가능하다 IDC, Server/DB is very Expe..