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

Java의 Argument 전달방식

Call by Value, Call by Reference Java Argument 전달방식에는 대부분 알고계시다시피 Call by value, Call by reference 두가지 방식이 있습니다. 이는 단어적의미로는 잘 와닿지는 않지만, 전문용어로 평가 전략(Evaluation Strategy)이라고 합니다. Java의 Argument 전달방식을 알아보기전에 위...

23 Jan 2021

과연 java.nio는 java.io보다 항상 좋은 성능을 보일까?

java.nio는 java4 부터 java.io의 단점을 보완하기위해 추가된 패키지로 nio(new-io)라는 이름으로 등장 하였습니다. (+ java7 부터 nio2를 통해 java.io와 java.nio가 추가 개선되었습니다.) 이번 포스팅에서는 File Read/Write 작업에 대해 java.io 를 사용 한 코드와 java.nio 를 사용한...

06 Jan 2021

MSA 프로덕션 레디 서비스 - 보안, 공통환경, 모니터링 (MSA-7)

MSA 보안 서비스 일반적으로 monlithic 환경 에서는 세션기반으로 보안 서비스가 구동되지만, 세션이 분리되어있는 MSA 환경 에서는 세션기안 보안 서비스를 사용하기가 어렵습니다. 일반적으로 MSA 환경 에서는 API Gateway에서 OAuth 2.0을 활용 해 각 서비스들에게 인증 토큰을...

27 Dec 2020

API 게이트웨이 (MSA-6)

MSA에서의 외부 API 이슈 MSA에서 외부 API를 제공한다고 할 때에는 다음과 같은 고려사항이 발생 할 것입니다. 클라이언트 소스에 따라 요구되는 데이터 종류가 다를 수 있다 서비스 접근 경로가 다양하다 성능이 낮은 네트워크를 통해 접근 할...

14 Dec 2020

Lombok Builder 사용시 유의할점

Lombok Builder 사용시 유의할점 개발을 매우 편리하게 도와주는 Lombok의 @Builder를 자주 사용하실텐데요, 사용상 주의하셔야 할 점이 있습니다. Obj obj = new Obj(); obj.setId(1); obj.setName("하나"); Obj obj = Obj.builder .id(1) .name("하나") .build(); 특정상황에서 위 선언한 두개의...

03 Dec 2020

java.nio.files.Files.lines에 대한 탐구

OOM이 터질수 있는 File read 인가 File에 존재하는 line count 를 구하기 위해 아래 메서드를 사용해 보았습니다. try(Stream<String> lines = Files.lines(path)) { count = lines.count(); } 위 코드를 PR올린 후 팀원분께서 ‘혹시 사이즈가 큰 파일을...

01 Dec 2020

에러노트 - non-static variable this cannot be referenced from a static context

에러 메세지 non-static variable this cannot be referenced from a static context 우선 해당 에러메세지를 통해 static context에서 non-static varaible을 참조하여 발생한 에러로 파악됩니다. 실행 환경 Intellij IDE Ultimate 2019.04 Intellij Lombok plugin 0.33 Project...

30 Nov 2020

분산된 데이터 쿼리하기 - API 조합패턴과 CQRS (MSA-5)

API 조합 패턴 하나의 DB에 여러 데이터를 저장하던 모놀리식 아키텍처에서는 여러 도메인의 데이터들를 조회하고, DB에서 쿼리로 조인하여 조합하기도 비교적 쉽게 수행 할 수 있었을 것 입니다. 하지만 MSA 환경에서는 여러 도메인의 조합된 데이터를 조회하는것은 여간...

22 Nov 2020

Spring boot 2.4.0 update

Spiring boot 2.4.0 update Spring boot 2.4.0 update 사항 정리 (2020. 11. 12) 원문 : https://spring.io/blog/2020/11/12/spring-boot-2-4-0-available-now versioning 형식의 변경 MAJOR.MINOR.PATCH[-MODIFIER] 형식으로 변경됨 2.4.0, 2.4.0-M1, 2.4.0-SNAPSHOT, … 기존 (2.3.5.RELEASE) -> 변경 (2.4.0) JUnit 5’s Vintage Engine...

18 Nov 2020

이벤트를 안전하게 전달하는 방법 - 이벤트소싱패턴 (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
Previous
Next
cobura12@gmail.com