(클라우드) 오픈스택이란 - 오픈스택 인 액션
1.1 오픈스택이란? 오픈스택은 사설 및 공용 클라우드를 만들기 위한 오픈 소스 소프트웨어 로 규정한다. 계속해서 오픈스택 소프트웨어는 대규모로 확장 가능한 클라우드 운영체제를 제공한다 라고 정의한다. 물리 및 가상 서버, 네트워크, 스토리지 시스템의 자원을 엮어서 이용할 수 있다. 테넌트, 할당량, 사용자 역할을 통해 자원의 클라우드...
1.1 오픈스택이란? 오픈스택은 사설 및 공용 클라우드를 만들기 위한 오픈 소스 소프트웨어 로 규정한다. 계속해서 오픈스택 소프트웨어는 대규모로 확장 가능한 클라우드 운영체제를 제공한다 라고 정의한다. 물리 및 가상 서버, 네트워크, 스토리지 시스템의 자원을 엮어서 이용할 수 있다. 테넌트, 할당량, 사용자 역할을 통해 자원의 클라우드...
쿠버네티스 등장 이유 거대한 모놀리식 레거시 애플리케이션은 점차 마이크로서비스라고 하는 더 작고 독립적으로 실행 가능한 구성 요소로 쪼개졌다. 마이크로서비스는 서로 분리돼 있기 때문에 개별적으로 개발, 배치, 업데이트, 확장을 할 수 있다. 따라서 오늘날 급변하는 비즈니스 요구 사항을 충족시킬 수 있을 만큼 자주, 신속하게 구성 요소를 변경할 수 있...
데이터베이스 Replication 이란? 데이터베이스 Replication이란 데이터베이스 별 권한을 두어 Master와 Slave로 관리하는 방식이다. Master에서는 쓰기 작업 만을 처리하며 Slave에서는 읽기 작업 만을 처리한다. 일반적인 애플리케이션 서비스는 DB의 70~80%가 읽기 요청이다. 그렇기 때문에 Replication을 통한 ...
Redis 분산락 Redis의 분산락에 대해서 알아보도록 하겠다. 락은 데이터 동시성 제어를 위해 필요하다. 그렇다면 왜 Redis 분산락을 사용해야하는지? 다른 방식으로 제어할 수는 없는지 알아보고 최종적으로 분산락의 사용법까지 알아보자. 데이터 동시성 제어 데이터의 동시성 제어(Concurrency Control)란, 여러 쓰레드가 하나의 데...
QueryDsl을 편하게 사용하기 위해 구현된 QuerydslRepositorySupport 를 확장하여 코드의 재사용성을 용이하게 하고 생산성을 향상 시킬수 있는 커스텀 QuerydslRepositorySupport를 개발해 보자. QuerydslRepositorySupport @Repository public abstract class Qu...
토이 프로젝트의 기능 구현에 앞서 패키지 구조의 유형에 대해 알아보고 어떠한 패키지 구조로 진행할지 결정하는 시간을 갖기로 했다. 패키지의 구조는 크게 레이어 계층형, 도메인형 크게 2가지 유형으로 구분된다. 각 유형에 대해 간단히 설명하고 어떠한 방향으로 개발해 나갈지에 대한 기준을 잡아보도록 하자. 패키지 구조 유형 계층형 com └──...
프로젝트 진행을 위해 NCP(Naver Cloud Platform) 환경에서 Jenkins Pipeline을 통한 CI/CD 구축 과정을 기록하였다. 구성 Jenkins와 Docker를 활용한 Pipeline 구성은 아래 이미지와 같다. NCP 클라우드 서버 생성 위와 같은 환경 구축을 위해 NCP에서 서버 2EA 를 생성해야한다. S...
개발을 진행하면서 비동기로 작업을 진행하고 작업 결과를 반환받아 처리해야 하는 상황이 생겨 비동기 작업을 처리하는 기술과 해당 기술을 선정하게 된 이유, 사용 방법에 대해 알아보도록 하자. 개발 목표 주문을 생성한다. 생성된 주문을 외부 서비스로 전송하여 확정 여부를 결정한다. 확정된 주문은 사용자에게 푸시 메세지로 전송한다. 주문...
Resilience4j 란? resilience4j 는 Netflix Hystrix에서 영감을 받았지만 함수형 프로그래밍을 위해 설계된 내결함성 라이브러리이며, Resilience(회복력)과 Java가 합쳐진 이름이다. 아래 6가지 기능을 제공한다. Code Modules resilience4j-circuitbreaker: Circuit br...
QueryDsl의 Expressions.stringTemplate으로 Sql 함수를 사용하면서 발생했던 문제를 확인해보자. 문제 상황 주문의 처리 수량을 summary하는 쿼리를 QueryDsl로 개발했다. LocalDateTime의 데이터를 DateTime에서 Date로 변경하여 group by 해야해서 Expressions.stringTem...