코딩공부 14

[마이크로서비스] 마이크로서비스의 원칙

본 글은 책 「샘뉴먼, "마이크로서비스 아키텍처 구축", 2017」의 마지막장을 정리한 글입니다.1. 비즈니스 개념에 맞춘 모델링비즈니스 경계로 나눠진 콘텍스트가 기술적 개념에 맞춰 구성된 인터페이스보다 안정적도메인 경계를 정의하기 위해 경계가 있는 콘텍스트(Bounded Context)를 이용2. 자동화 문화의 적용서비스들의 동작을 보장하는 것이 모놀리식 시스템보다 복잡하므로 자동화 테스팅이 중요명령행 호출을 통한 배포와 지속적 배포 이용배포 시 환경 차이를 구체화 하기 위한 환경 정의 (ex OS)더 빠른 배포를 위한 커스텀 이미지 생성과 불변 서버를 이용3. 내부 세부 구현의 은폐경계가 있는 콘텍스트로 모델링을 통해 세부 구현을 은폐테이터베이스를 감추고 데이터 펌프, 이벤트 데이터 펌프를 통해 여러..

코딩공부/MSA 2024.04.01

Git 연습 사이트 소개 (+ 연습 사이트 명령어)

본 글에서는 Git을 연습할 수 있는 웹사이트를 소개하고 후기를 설명합니다. 또한 연습사이트에서 사용할 수 있는 연습 사이트명령어를 설명합니다. 1. 사이트주소 : https://learngitbranching.js.org/?locale=ko Learn Git Branching An interactive Git visualization tool to educate and challenge! learngitbranching.js.org Git을 공부 할 수 있는 사이트입니다. 기초부터 심화까지 Level별로 실습할 수 있는 환경을 제공하여 자연스럽게 Git 명령어에 익숙해 질 수 있는 환경을 만들었습니다. 해당 사이트에서 연습할 수 있는 명령어는 다음과 같습니다. - 로컬 명렁어 : commit, bran..

코딩공부/기타 2024.02.06

IgniteFuture을 CompletableFuture로 변환

Spring Webflux 코딩중 IgniteFuture를 CompleteFuture 객체로 변환해야하는 상황을 만났습니다. 인터넷 서핑을 하던 도중 GridGain 발표자료에서 객체 변환 방법을 설명하고 있어서 정리하였습니다. static CompletableFuture toCompletableFuture(IgniteFuture igniteFuture) { CompletableFuture future = new CompletableFuture(); //igniteFuture 객체에 callback을 등록(listen)합니다. igniteFuture.listen( fut->{ try{ //callback 결과로 도출된 값을 얻습니다. V res = fut.get(); //CompletableFuture에..

코딩공부/기타 2024.01.21

[Hazelcast] Split-Brain Recovery란

본 글에서는 Hazelcast의 Split-Brain Recovery에 대해서 다룹니다. Split-Brain Recovery는 Cluster의 분할이 감지되었을때 Merge를 어떻게 수행할지 설정하는 과정입니다. Hazelcast 공식 문서에 서술된 내용 일부를 번역하여 Split-Brain Recovery가 무엇인지, Merge Policy에는 어떤것들이 있는지, 설정은 어떻게 하면 되는지를 본 글에서 다룹니다. 1. Split-Brain Recovery 개요 Hazelcast는 주기적으로 백그라운드 작업을 통해 Cluster의 Split을 탐지합니다. Split이 탐지되면 우선 Merge를 시작 할 쪽을 결정합니다. 이 결정은 Cluster의 크기로 결정되는데요, Member의 수가 작은 Cluet..

[Apache Ignite] Data Consistency를 위한 Data Replication, Write Sync 설정

본 글에서는 Apache Ignite에서 Data Consistency를 위한 두 가지 설정인 Data Replication, Write Sync 설정에 대해서 다룹니다. 1. Data Replication 관련 설정 Ignite은 Data Replication 관련하여 Partition, Replicated 두 가지 Mode를 제공합니다. 먼저 Partition의 경우 전체 데이터의 여러 Partition을 만들어 노드에 저장하는 모드입니다. 이때 복제본 개수는 설정할 수 있습니다. 다음으로 Replicated 모드는 모든 노드가 모든 복제본을 가지고 있는 모드입니다. CacheConfiguration cacheCfg = new CacheConfiguration("myCache"); cacheCfg.s..

[Hazelcast] Split-Brain Protection이란

본 글에서는 Hazelcast의 Split-Brain Protection에 개념에 대해서 다룹니다. 요약하면 클러스터에 참여하고 있는 구성원 수가 특정 수 아래로 떨어지면 transaction을 막는 기능입니다. 1. Split-Brain Protection 개념 공식 문서에서는 다음과 같이 소개하고 있습니다. " Hazelcast에서 제공하는 Split-Brain Protection는 클러스터 구성원 수가 지정된 구성원 수 아래로 떨어지는 경우 클러스터를 보호합니다. Split-Brain Protection 시나리오에 대응하는 방법은 데이터의 Consistency가 중요한지 애플리케이션의 Availability가 중요한지에 따라 달라집니다. 두 경우 모두 분할 브레인 시나리오는 네트워크 오류로 인해 발..

[Spring Boot] Spring Boot 내장 Tomcat의 thread pool 설정

본 글에서는 Spring Boot 내장 Tomcat thread pool 설정과 현재 톰캣 thread 개수를 간단하게 모니터링 하는 방법을 간단하게 설명합니다. tomcat thread pool 설정은 application.properties를 통해서 그리고 모니터링은 actuator를 통해 진행합니다. 1. 설정 - maven 설정 actuator와 starter-web dependency를 추가하였습니다. org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-web - application.properties 아래는 tomcat thread pool과 모니터링 관련 설정입니다...

[Apache Ignite] Apache Ignite 기본 개념

본 글에서는 Apache Ignite에 대해서 기본 개념을 공식 홈페이지 소개글을 기반으로하여 설명합니다. 1. Apache Ignite의 기본 개념 Apache Ignite은 공식문서에 Apache Ignite을 다음과 같이 정의합니다. Aapche Ignite은 in-memory 속도의 높은 성능을 제공하는 분산 저장소이다. 여기서 "in-memory"는 데이터 접근에 아주 빠른 속도를 제공함을 의미하고 "분산"은 무제한의 확장성(scalability)와 따라서 무제한의 throughput을 제공함을 의미합니다. Apache Ignite는 In-Memory Cache, In-memory DB (IMDB), In-memory Data Grid (IMDG)로 사용될 수 있습니다. 여기서 IMDB는 메모리..

java.lang.UnsupportedClassVersionError 원인 및 해결 방법

본 글에서는 java.lang.UnsupportedClassVersionError의 발생 원인과 해결 방법을 설명합니다. 결론적으로 말하자면 실행한 class 파일이 실행환경의 java 버전보다 높은 환경에서 컴파일돼서 입니다. 이를 해결 하기 위해서는 1) java 버전을 높이거나 2) class를 포함하는 jar 파일을 낮은 java 버전으로 다시 컴파일 하면 됩니다. 1. 오류 발생 원인 제가 해당 에러를 찾아본 이유는 외부에서 개발해서 넘겨준 jar파일을 classpath에 추가하여 포함된 함수를 호출하였는데 발생해서 입니다. Exception in thread "main" java.lang.UnsupportedClassVersionError: com/example/versionerr has be..

코딩공부/기타 2023.12.09

>> /dev/null 2>&1 의미

본 글에서는 >> /dev/null 2>&1의 의미를 풀어서 설명한다. 결론적으로 말하자면 표준출력(stdout)과 표준에러(stderr)를 모두 버린다는 뜻이다. 1. 해석하고자 하는 명령어 ./app/myprogram >> /dev/null 2>&1 2. 명령어 뜯어보기 - ./app/myprogram >> myprogram의 결과를 >> (redirect)에 뒤에 붙여서 쓴다는 의미이다. >>는 뒤에 붙여쓰고 >는 이미 존재하는 파일을 지운다. - /dev/null /dev/null은 redirect결과를 버릴때 사용하는 특별한 파일이다. 사실 그래서 위의 명령어에서 >> 대신 >를 사용해도 결과는 동일하다. 따라서 프로그램 표준 출력 결과를 /dev/null에 redirect시켜 모두 버려지게 만..

코딩공부/기타 2023.12.06