분류 전체보기 (70) 썸네일형 리스트형 우당탕탕 쿠버네티스 구축 도전기 - 3 이전 포스팅에서는 쿠버네티스 설치까지 완료하였습니다. 이제 구성은 완료되었으니 쿠버네티스 대시보드를 설치해서 UI 툴을 이용하려 합니다. 대시보드를 이용하면 각 Pod, Service 등 다양한 리소스들을 한눈에 조작할 수 있어 매우 유용합니다. 쿠버네티스 대시보드 설치하기 1. 대시보드 설치를 위해서 아래 명령어를 수행해 줍니다.kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 해당 명령어를 통해서 다음 리소스를 생성합니다. kubernetes-dashboard 네임스페이스Dashboard PodDashboard Service (ClusterIP)Metrics S.. 우당탕탕 쿠버네티스 구축 도전기 - 2 이전 포스팅에서는 서버환경을 구축하는 것을 소개하였습니다. 이번에는 하이퍼바이저를 이용하여 쿠버네티스 설치를 위한 마스터, 노드 서버 구성을 진행하고자 합니다.구성을 앞서 하이퍼바이저가 무엇이고 이를 구성하는 요소에 대해서 간략히 정리하고자 합니다. 가상화란?가상화란 물리적인 하드웨어를 논리적으로 구분하는 것으로 하나의 하드웨어에서 여러 개의 시스템을 효율적으로 사용할 수 있게 해주는 기술입니다. 하이퍼바이저(Hypervisor)란?하이퍼바이저는 프로세서, 메모리, 스토리지와 같은 컴퓨팅 리소스를 풀링하여 가상 머신(VM)에 재할당하는 소프트웨어입니다. 이 기술을 통해 여러 VM을 생성하여 단일 물리 머신에서 실행하는 가상화가 실현될 수 있습니다. 하이퍼바이저는 크게 Type1 하이퍼바이저와 Type2.. 우당탕탕 쿠버네티스 구축 도전기 - 1 요즘 백엔드 개발자에게 요구되는 많은 기술 중 하나인 k8s에 도전을 해보고 싶었습니다. 필자는 스프링, 아파치 미나와 같은 프레임워크 기반으로 API, 소켓 서버를 개발하고 있다 보니 신기술에 경험을 가질 수 있는 기회가 적어 개인적으로 신기술 학습을 꾸준히 하고 있으며, 최근에는 Redis, Kafka 기술을 토이 프로젝트를 진행해 보았고 이번에는 백 발자에게 요구되는 많은 기술 중 하나인 쿠버네티스를 도전하려 합니다. 1. 기본 환경 구성 공인 IP 할당받고 있는 공유기에 PC들이 묶여있는 공유기가 하나 더 연결 되어있습니다. 미니 PC를 활용하여 하이퍼바이저를 설치하였고 VM 3대를 설치하여 쿠버네티스 마스터, 노드 1, 노드 2 구성을 진행하고 합니다. 먼저 환경 구성을 위한 설치와 간단한 포.. 헥사고날 아키텍처(Hexagonal Archtecture) 이번 포스팅은 헥사고날 아키텍쳐에 대해서 알아볼 예정이며 필자의 경우 해당 아키텍쳐에 대해서 지식을 습득한 이후 토이 프로젝트에 적용 해볼 생각이다. 헥사고날 아키텍처란?헥사고날 아키텍쳐는 응용 프로그램의 비지니스 로직을 외부 세계로부터 격리시켜 유여한고 테스트가 쉬운 구조를 만드는 것입니다.이를 위해 핵심 비지니스 로직은 중앙의 도메인 영역에 위치하며, 입력과 출력을 처리하는 포트와 어댑터를 통해 외부와 소틍을 합니다. 해당 아키텍쳐의 핵심은 도메인과 비지니스 로직을 외부 요소에 의존하지 않고, 프레젠테이션 계층, 데이터 소스 계층 같은 외부 요소들이 도메인에 의존하도록 만듭니다. 위의 내용으로 프로그래머는 아래와 같은 효과를 볼 수 있습니다.관심사의 분리를 통하여 외부 요소에 영향을 받지 않고 비.. Spring Boot Batch 적용하기 - 3 배치는 대용량 데이터를 처리하기 위한 도구로 유용하게 사용되고 있습니다. 스프링 배치를 사용하며 다양한 기능에 대한 효과를 볼 수 있습니다. 배치에 성능도 필요하게되면 우리는 병렬 처리를 고민해 볼 수 있습니다. 스프링 배치는 다양한 병렬 방식을 제공해주고 있으며 이번 포스팅에서는 스프링 부트 병렬 방식에 대해서 알아보겠습니다. Spring Batch Chunk 병렬 처리 방식 1. AsyncItemProcessor AsyncItemProcessor는 process로직을 병렬 처리하는 방식입니다. (spring-batch-integration 의존성이 별도로 필요)process의 처리 결과로 Future를 반환하고 Writer에서 Future의 결과를 종합하여 처리합니다. 기존 Processor, W.. Spring Scope와 ObjectProvider, proxyMode Bean Scope 스프링은 빈이라는 개념으로 자바 객체를 만들고 싱글톤화 시켜 관리하여 줍니다.이 객체들은 스프링 IoC 컨테이너의 의해 생성되고 소멸되는 등의 관리가 이루어 집니다. 이때 bean이 관리되는 범위를 Bean scope라고 합니다.여기서 bean이 싱글턴화 되서 관리되는 이유는 spring bean의 기본 scope 전략이 Singleton 이기 때문입니다. scope설명singleton하나의 Bean 정의 대해서 Spring Container 내에 단 하나의 개객체만 존재한다.prototype하나의 Bean 정의에 대해서 다수의 객체가 존재할 수 있다.request하나의 Bean 정의에 대해서 하나의 HTTP request의 생명 주기 안에 단 하나의 객체만 존재한다.즉, 각각의 H.. Spring Boot Batch 적용하기 - 2 1. Step Skip Step 처리 도중에서 설정한 Exception이 발생하게 되면 해당 데이터를 건너뛰는 기능입니다.데이터의 작은 오류에 대해서 Step 의 실패 처리 대신 Skip 을 함으로써 배치 수행의 빈번한 실패를 줄일 수 있습니다.Skip 제한을 초과하는 경우가 되면 Exception이 발생됩니다. ItemReaderitem 을 읽던 도중 예외가 발생하게 되면 해당 item 을 skip 하고 다음 item 을 읽습는다. ItemProcessoritem 을 처리하던 도중 예외가 발생하면 해당 Chunk 의 첫 단계로 돌아가서 itemReader로부터 다시 데이터를 전달받습니다.itemProcessor 는 다시 item 을 받아 실행하는데 이전 실행에서 발생한 예외 정보가 내부적으로 남아있어 .. Spring Boot Batch 적용하기 - 1 1. 스프링 배치 (Spring Batch) 스프링 배치(Spring Batch)는 대용량 데이터를 처리하기 위한 프레임워크로 스프링 기반에서 동작합니다.대량의 데이터를 효율적으로 처리하기위 해다양한 기능을 제공해줍니다. 로깅 및 추적작업 처리 통계작업 재시작건너뛰기/리소스 관리트랜잭션 관리위 와같이 대용량 데이터 처리를 안정적으로 처리를 제공해줍니다.스프링 배치(Spring Batch) 위와 같은 아키텍쳐 구성을 가지고 있습니다. ※ Batch 와 Scheduler 차이배치(Batch)는 논리적 또는 물리적으로 구성된 데이터를 그룹화하여 일괄 처리하는 방법을 의미합니다. 스케줄러(Scheduler)는 주어진 작업을 정의된 시간에 수행할 수 있게 도와주는 도구를 의미합니다. 배치는 대량의 데이터를 일괄.. Spring Boot + Quartz 적용하기 - 3 앞서 Spring Boot + Quartz 스케줄링을 구현해보았습니다.해당 포스팅은 클러스팅 환경에서 동작할 수 있게 구현해보았습니다. 1. Quartz 데이터베이스 생성Quartz 클러스터 환경을 구축하기 위해서는 메타 정보를 관리하는 데이터베이스를 생성해 주어야한다. 인텔리제이를 사용하는 사용자는 아래처럼 sql을 찾아서 테이블을 생성해주면 됩니다. 아래처럼 스키마를 구성해주면 됩니다. 이후 application.yml에 아래와 같이 설정해주었습니다. 2. quartz properties 설정이제는 quartz properties 설정을 해주면 됩니다. datasource를 설정해주고 클러스팅 처리 설정을 ture로 진행해주세요.우리는 클러스터링 환경을 구성하기 위하여 JDBC JobStore를 선.. Spring Boot + Quartz 적용하기 - 2 앞서 Quartz에 대해서 개념을 알아보았다해당 포스팅은 Spring Boot + Quartz를 활용하여 스케줄링을 구현해보겠습니다. 1. SchdulerJob과 Trigger를 연결하여 Job을 실행시키는 역할을 수행하는 인터페이스입니다.Spring + Quartz 사용으로 ApplicationContext에 의해 관리되는 SchedulerFactoryBean을 생성해주었다.SchedulerFactoryBean에 JobFactory를 등록하여 Job도 컨텍스트로 관리될수 있게 설정된다. package com.kr.quartz.config;import com.kr.quartz.listener.MyJobListener;import com.kr.quartz.listener.TriggerListener.. 이전 1 2 3 4 ··· 7 다음