분류 전체보기

·Architecture/MSA
현대의 분산 시스템과 마이크로서비스 아키텍처(MSA)는 데이터 관리의 복잡성을 크게 증가시키고 있습니다. 이러한 시스템에서는 다양한 서비스가 독립적으로 운영되며, 데이터 일관성과 성능 요구 사항을 동시에 충족해야 하는 도전 과제가 있습니다. 이를 해결하기 위해 이벤트 소싱(Event Sourcing)과 CQRS(Command Query Responsibility Segregation)와 같은 패턴이 널리 사용되고 있습니다. 이벤트 소싱(Event Sourcing)이란❓이벤트 소싱은 시스템의 상태를 현재 상태로 저장하는 대신, 상태 변화(변경)를 나타내는 이벤트를 기록하는 패턴입니다. 이를 통해 시스템의 모든 상태 변경 이력을 저장하고, 이를 기반으로 현재 상태를 재구성할 수 있습니다. 이벤트 소싱의 주요..
본 글은 Spring boot의 @Valid 어노테이션에 대해서 공부한 지식을 정리한 글입니다.애플리케이션 개발에서 데이터의 유효성을 검증하는 것은 필수적입니다. 사용자로부터 입력받은 데이터가 올바르고 기대한 형식에 맞는지 확인하는 과정은 오류를 방지하고, 애플리케이션의 신뢰성을 높이는 데 중요한 역할을 합니다. Java에서는 Bean Validation API를 통해 이 과정을 효율적으로 처리할 수 있으며, 그 핵심적인 도구 중 하나가 바로 @Valid 어노테이션입니다.  @Valid 어노테이션이란❓@Valid 어노테이션은 Java의 Bean Validation API에서 제공되는 어노테이션으로, 객체의 유효성을 검사하는 데 사용됩니다. 이 @Valid어노테이션은 주로 Spring Framework과 ..
·TIL,일일 회고
본 글은 @RequestParam을 사용할 때 파라미터를 final로 선언하는 이유에 대해서 공부한 지식을 정리한 글입니다.처음 원본 코드는 위와 같이 user_id를 매개변수로 받을 때 final로 선언하지 않았습니다. 그런데 코드리뷰를 받다가, @RequestParam을 사용할 때 final로 선언하면 좋다고 조언을 해주셨습니다. 그 이유는 다음과 같습니다.  불변성 보장final 키워드를 사용하면 해당 파라미터는 메서드 내에서 값이 변경되지 않는다는 것을 보장합니다.이는 코드의 가독성을 높이고 버그를 방지하는 데 도움이 됩니다. 특히 멀티스레드 환경에서는 불변성이 중요한 역할을 할 수 있습니다.코드 명확성 파라미터를 final로 선언하면 해당 파라미터는 메서드 내부에서 변경되지 않으므로, 코드의 ..
·Architecture/MSA
본 글은 2PC와 SAGA패턴에 대해서 공부한 지식을 정리한 글입니다.전통적인 모놀리식 아키텍처에서는 애플리케이션의 모든 기능이 하나의 애플리케이션 내에서 구현되며, 데이터베이스 트랜잭션은 단일 데이터베이스에서 처리됩니다. 이 구조에서는 트랜잭션 관리가 비교적 간단하며, commit이나 rollback을 트랜잭션의 원자성, 일관성, 격리성, 지속성(ACID 속성)을 보장하는 것이 수월합니다. 모놀리식 아키텍처의 데이터베이스는 일관된 상태를 유지하기 쉬운 반면, 애플리케이션이 커지고 복잡해지면서 성능과 유지보수에 어려움을 겪을 수 있습니다. 반면, 마이크로서비스 아키텍처(MSA)에서는 애플리케이션을 독립적인 서비스들로 나누어 개발하고 운영합니다. 각 서비스는 자신만의 데이터베이스를 가지고 있으며, 서비스 ..
지누박
'분류 전체보기' 카테고리의 글 목록 (23 Page)