Taes-k DevLog
  • 몰라도 되는 스프링
  • Refactoring (2판)
  • Review
  • 요령과 기본(Spring)

이벤트를 안전하게 전달하는 방법 - 이벤트소싱패턴 (MSA-4)

이벤트 소싱 이전 포스팅에서 MSA 서비스간 통신하는 여러가지 방법들에 대해 알아보았습니다. 또한, MSA 분산환경에서도 데이터의 일관성을 유지하기위해 SAGA 패턴을 통해 트랜잭션을 유지하는 방법에 대해서도 확인해 보았는데 아무래도 이벤트 전달 결과만을 DB에 저장하는 특성상 오류에 대한...

15 Nov 2020

MSA 트랜잭션 (MSA-3)

MSA Transaction MSA 구성을 할 계획이시라면 아마도 가장 고민되는 사항은 MSA 서비스간의 트랜잭션일 것입니다. 기존 monolithic 시스템에서는 동일 DB를 사용하면서 매우 간단하게 트랜잭션이 보장이 되었겠지만, MSA 시스템에서는 DB가 분리되었을 뿐만 아니라 다중 데이터소스를 통해 데이터를...

28 Oct 2020

MSA 서비스간 통신 (MSA-2)

MSA IPC 앞서서 MSA 서비스를 어떻게 나눌것인가에대해 알아보았습니다. 그다음으로 정해야 할 것은 MSA의 핵심이라 할 수 있는 서비스간의 통신 IPC (Inter-Process Communication) 입니다. MSA가 아니라도 서비스를 구축할때는 각 서비스의 환경에따른 다양한 방법으로 통신을 해야하는데, 아래와...

22 Oct 2020

Monolithic을 MSA로 전환 해보자! (MSA-1)

Monolithic Architecture 요즈음 개발트렌드가 MSA(Micro Service Architecure) 라고 해서, MSA와 반대되는 개념인 Monolithic(Monolithic Architecture) 보다 무조건 좋다고는 할 수는 없습니다. MSA도 특정한 상황속에서 탄생한 한가지의 소프트웨어 설계 패턴입니다. 작은 시스템에서의 Monolithic의 경우 여러 비즈니스 로직,...

18 Oct 2020

Docker로 Spring 서비스를 운영 해보자 (Docker-2)

Docker image 만들기 Docker로 서비스를 운영하기 전, 가장먼저 해야 할 일은 Docker image를 만드는 것 입니다. 이번 포스팅에서는 Docker 운영배포를 위한 예제로써, Spring boot MVC로 구성한 간단한 User API 프로젝트가 이미 구성되어있다는 전제하여 진행을 하겠습니다....

13 Sep 2020

Spring WebFlux (Spring reactive-3)

WebFlux 기존의 Blocking 기반의 Spring Web framework인 Spring WebMVC와 더불어 Spring 5.0 부터는 Non-Blocking 기반의 framework인 Spring Webflux를 지원하고 있습니다. Pivotal에서는 Spring WebFlux를 만든 이유에대해서 다음과 같이 설명하고 있습니다. Why was Spring WebFlux created? Part...

18 Aug 2020

R2DBC mysql (Spring reactive-2)

R2DBC 포스팅 작성일 기준 (2020.08.17) Spring boot 최신 버전인 spring-boot-2.3.x 에서는 신기술을 탐닉하는 스프링진영의 개발자들이라면 기다려왔을 R2DBC의 GA (General Availability)버전이 Spring-data 프로젝트에 포함되었습니다. The Reactive Relational Database Connectivity (R2DBC) 는 이름 그대로 RDB를 Reactive하게 사용...

17 Aug 2020

Reactive 프로그래밍 (Spring reactive-1)

reactive vs imperative 저를 포함한 대부분의 독자분들 께서는 reactive라 하면 늘 찬양하는 글과 발표주제들을 보셨을 겁니다. 소개 내용을 보면 효율적이고 멋진 프로그래밍을 할 수 있어보이지만 실제로 실무환경에서 reactive를 적용시켜보기에는 어려운점이 많으셨을거라 생각합니다. 이번 포스팅에서는 reactive의...

12 Aug 2020

Docker를 알아보자 (Docker-1)

Container 흔히들 Docker를 Container 기반의 가상화 기술이라고 설명을 하는데, Docker는 컨테이너 기술을 활용해 제공하는 플랫폼 서비스이자, 현 시점에서 컨테이너 기술을 선도하는 기업 입니다. 따라서 Docker를 이해하기 위해서는 Container에 대해서 알고 넘어가는것이 필수 입니다. Container 혹은...

31 Jul 2020

Redis를 운영하면서 반드시 알아야할 내용들

Redis 특성 Redis는 In-Memory Store로써, 기본적으로 빠른 데이터 입출력을 제공합니다. 그와 더불어 기본적으로 해시기반의 Key-Value 형식의 저장방식을 제공하면서 키 등록/ 조회에 O(1)의 성능을 보장합니다. Get : O(1) SET : O(1) Value로써 사용될 수 있는 자료구조로는...

23 Jul 2020

Spring boot 2.3.x update

요약 Spring boot 2.3 주요 패치사항을 요약해보자면, 다음과 같은 기능들이 강화되었습니다. Docker Image Custom Layer k8s monitoring Graceful shutdown 전반적으로 Container 기술을 효율적으로 사용하기 위한 기능들이 이번버전에서 업데이트 되었다고 할 수 있을것 같습니다. 자세한 내용은...

21 Jul 2020

Vertica jdbc bulk insert

vertica bulk insert 일반적으로 사용되는 OLTP(OnLine Transaction Processing)성 DB와는 다르게, Vertica는 OLAP(OnLine Analytical Processing)성 DB로, 대량데이터 처리에 초점이 맞추어져 있습니다. 따라서 서비스를 설계 할 때에도 이러한 DB의 특성에 맞추어 설계를 해야하는데, 예를 들어 MySQL에서 다량의...

09 Jul 2020

Redis 자료구조 변경으로 메모리 사용량을 줄여보자!

Redis 메모리 에러 저희팀에서는 상품 판별을 위해 DB 앞단에 Redis를 두고 상품정보를 persistant 하게 관리하고 있습니다. 그렇게 상품건수가 2억 5천만건을 넘어가던 어느날 Reedis에서 다음과 같은 에러가 발생하면서 정상적인 데이터 처리에 실패 했습니다. MISCONF Redis is...

05 Jul 2020

Jenkins - 내 PR을 자동으로 코드리뷰 받게하자!

CI 들어가기 앞서서, CI에대해 짧게나마 설명을 드리고 가도록 하겠습니다. Continuous Integration약어인 CI는 일반적으로 지속적 통합이라는 용어로 번역되는데, 이용어의 유래는 위키백과에 잘 설명되어있어 내용을 발췌합니다. 소프트웨어 개발에서 각 소프트웨어 개발자가 작업한 변경점을 프로젝트의 원래 소스 코드에...

22 Jun 2020

Scope에 따른 Spring bean life-cycle

Spring bean bean의 life-cycle을 알아보기에 앞서서 bean의 개념부터 간단하게 알아보도록 하겠습니다. (해당 포스팅 내용은 정확한 내용 전달을 위해 Spring doc 내용을 발췌 번역한 내용임을 알립니다. - docs.spring.io) bean은 SpringFramework에서 가장 중추적인 역할을 하는 Spring IoC...

14 Jun 2020
Previous
Next
cobura12@gmail.com