[Clean Architecture #2] Clean Architecture with Spring Boot
Spring Boot와 Clean Architecture Spring Boot의 3-Tier 아키텍처와 Clean Architecture는 소프트웨어 설계에서 계층화를 통해 코드의 유지보수성과 확장성을 높이는 것을 목표로 한다. 두 아키텍처 모두 명확한 계층 분리를 통해 책임을 분...
Spring Boot와 Clean Architecture Spring Boot의 3-Tier 아키텍처와 Clean Architecture는 소프트웨어 설계에서 계층화를 통해 코드의 유지보수성과 확장성을 높이는 것을 목표로 한다. 두 아키텍처 모두 명확한 계층 분리를 통해 책임을 분...
Clean Architecture: 유지보수성과 확장성을 극대화하는 아키텍처 패턴 소프트웨어 개발의 궁극적인 목표는 높은 유지보수성과 확장성을 갖춘 시스템을 구축하는 것이다. 이를 위해서는 명확한 아키텍처 패턴을 적용하는 것이 중요하다. Clean Architecture는 이러...
SOLID 원칙: 깨끗한 아키텍처를 위한 기초 개념 소프트웨어 개발에서 유지보수성과 확장성을 높이기 위해 여러가지 설계 원칙이 있다. 그중에서도 특히 중요한 것이 바로 SOLID 원칙이다. SOLID 원칙은 객체지향 설계에서 지켜야 할 다섯가지 기본 원칙을 의미하며, 코드의 품질을...
서비스 조합 패턴(Service Composition Pattern) 서비스 조합 패턴은 마이크로서비스 아키텍처에서 여러 서비스를 조합하여 비즈니스 기능을 구현하는 방식을 설명한다. 이번 포스팅에서는 서비스 오케스트레이션 패턴, 서비스 코레오그래피 패턴, 사가 패넡을 다루며, 각...
연결성 패턴(Connectivity Patterns)이란? 클라우드 네이티브 애플리케이션에서 연결성 패턴은 서비스 간의 상호작용을 관리하고 최적화하는 데 중요하다. 이번 포스팅에서는 서비스 연결성, 서비스 추상화, 서비스 레지스트리 및 검색, 서비스 탄력성, 사이드카, 서비스 메시...
통신패턴이란? 클라우드 네이티브 애플리케이션에서 통신 패턴은 서비스 간의 데이터 교환을 관리하고 최적화하는 데 중요하다. 이번 포스팅에서는 서비스 간 통신을 위한 다양한 패턴을 소개하고, 동기 및 비동기 메시징 패턴을 포함한 여러 기술들을 설명한다. 각 패턴의 장단점과 사용 사례를...
클라우드 네이티브 애플리케이션이란? 개요 클라우드 네이티브 애플리케이션은 클라우드 환경에서 최적화된 방식으로 설계되어 확장성, 유연성, 유지보수성, 그리고 가용성을 극대화 한다.
비동기 메시지 큐와 주요 메시지 큐 시스템 비교 비동기 메시지 큐는 분산 시스템에서 구성 요소 간의 데이터 교환을 비동기적으로 처리하는 데 중요한 역할을 한다. 이 포스팅에서는 비동기 메시지 큐의 개념을 설명하고, Redis, RabbitMQ, Kafka와 같은 주요 메시지 큐 시...
Join과 Join Methods 데이터베이스에서 여러 테이블의 데이터를 결합할 떄 조인(Join)은 핵심적인 역할을 한다. SQL 쿼리에서 조인은 테이블간의 관계를 정의하고, 필요한 데이터를 효율적으로 검색할 수 있게 해준다. 이 포스팅에서는 조인의 종류와 조인 메소드에 대해 ...
쿼리실행계획(Query Execution Plan) 이해하기 쿼리실행계획(Query Execution Plan, QEP)은 데이터베이스가 쿼리를 처리하기 위해 선택한 전략을 보여주는 중요한 도구이다. 이 포스팅에서는 쿼리실행계획의 개념과 구성요소를 설명하고, 실제 예제를 통해 실행...
Database Index란? 데이터베이스 인덱스는 데이터베이스 테이블의 특정 열에 대해 검색 성능을 향상시키기 위해 사용하는 데이터 구조이다. 인덱스는 책의 목차처럼 특정 데이터를 빠르게 찾을 수 있게 도와준다. 이 포스팅에서는 데이터베이스 인덱스의 개념, 작동원리, 유형, 장...
Docker는 컨테이너 배포 및 런타임을 책임지는 컨테이너 엔진이다. 최근 개발 패러다임이 MSA, DevOps, Cloud으로 전환되면서 Docker는 엔지니어에게 필수 기술이 되었다. 사실 도커는 취준생 시절 조금이나마 최신 기술 트렌드를 알고있다고 어필 하기위해 사용법을 익힌...
2년간 서비스에 GO 와 GRPC 를 사용하며 개인적으로 느낀점에 대해 정리할 필요성을 느꼈다. 오랜만에 작성하는 포스팅
마지막 포스팅 이후 오랜 시간이 지났다. 작년 10월, 경력 1년을 찍는 순간 그동안 계획했던 이직활동을 본격적으로 시작했다. 이력서를 정리하고 여러 회사에 지원하면서 자연스럽게 블로그 포스팅을 못하게 되었다. 물론 올해 2월에 그토록 원하던 이직에 성공했고 새로운 회사에 적응중이...
Overview Eureka는 JAVA 프로젝트로 JVM 어플리케이션에 대해 Service Discovery를 지원한다. MSA는 Polyglot을 지원한다고 했다. Polyglot은 언어에 관계 없이 마이크로서비스로 구성이 가능하다는 것을 의미한다.
앞서 MSA와 Service Discovery를 위한 Eureka Server/Client에 대해 정리했다. 그렇다면 유레카 서버에 등록된 서비스들은 어떻게 접근할까?
MSA에서 Service Discovery의 필요성 서버의 IP 혹은, 서비스의 엔드포인트가 비교적 정적이였던 시절, 서비스 DNS는 서버 관리자가 직접 관리했다. 하지만 고가용 서비스를 지향하는 클라우드/컨테이너 환경이 보편화 됨에 따라, 휴먼파워로 DNS를 관리하기란 상당히 어...
Spring Cloud (Spring Boot + Netflix OSS)를 사용한 API GATEWAY 개발기를 작성하기 전에 MSA의 개요와 간단한 특징을 설명하려고 한다. 물론 다른 개발 블로그에서 훨씬 전문적이고, 통찰력 있는 글들도 많지만 API GATEWAY를 개발하면서 ...
OS: Thread Overview 첫번째 주제는 Thread로, Thread의 개념 및 개발 시 신경써야 할 특징들에 대해서 알아볼 것입니다. 보통 Thread 실습 시 C언어를 사용하지만, 이번 Sample Code는 저희 그룹의 주력 언어인 JAVA를 사용할 것입니다. 기본적...