분류 전체보기

    2. spring Batch Job Flow

    이글을 창천 향로님의 블로그의 글을 따라한 내용입니다. https://jojoldu.tistory.com/328?category=902551 4. Spring Batch 가이드 - Spring Batch Job Flow 자 이번 시간부터 본격적으로 실전에서 사용할 수 있는 Spring Batch 내용들을 배워보겠습니다. 작업한 모든 코드는 Github에 있으니 참고하시면 됩니다. 앞서 Spring Batch의 Job을 구성하는데는 Step이 jojoldu.tistory.com 앞서 Spring Batch의 Job을 구성하는데는 Step 존재하는데 Step은 실제 Batch 작업을 수행하는 역할을 합니다. - Step에서는 Batch로 실제 처리하고자 하는 기능과 설정을 모두 포함하는 장소 1. Next ..

    1. 기본 개념과 메타 데이터 테이블

    배치 어플리케이션 대용량 데이터 - 배치 어플리케이션은 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리를 할 수 ​​있어야 합니다. 자동화 - 배치 어플리케이션은 심각한 문제 해결을 제외하고는 사용자 개입 없이 실행되어야 합니다. 견고성 - 배치 어플리케이션은 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 합니다. 신뢰성 - 배치 어플리케이션은 무엇이 잘못되었는지를 추적할 수 있어야 합니다. (로깅, 알림) 성능 - 배치 어플리케이션은 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 어플리케이션을 방해하지 않도록 수행되어야합니다. Accenture의 배치 노하우 & 기술력과 Spring 프레임워크가 합쳐져 만들어진 것 DI, AOP, 서비스 추상화 등 Spring 프레임워크의 3..

    6. Spring Cloud Config

    Config server 마이크로서비스의 어떠한 설정(환경변수값, Spring cloud 설정 등)이 변경되었을때 서버 재시작 없이 동적으로 적용 마이크로서비스가 배포될때 제반 설정값들을 배포 대상 환경(개발계, 검증계, 운영계 등)에 맞게 적용 마이크로서비스를 Stateless하게 개발하기 위해서입니다. Stateless하게 만들어야 스케일링(마이크로서비스 인스턴스 서버 - 즉, 컨테이너의 증감)과 부담없는 재시작이 가능 실습 1. 의존성 및 config repository 설정 ... ext['springCloudVersion'] = 'Finchley.SR2' ... dependencies { compile('org.springframework.cloud:spring-cloud-config-serve..

    5. zuul - [Spring Cloud를 활용한 MSA 기초 온라인 강의 실습]

    Zuul - API Gateway API Gateway는 API의 요청자인 Client와 API의 제공자인 backend service를 연결하는 중계자(또는 출입문) API Gateway가 필요한 이유 1. 횡단 관심사 - 인증/인가: 부적절한 요청을 차단하여 Backend service를 보호 - rate limiting: 일정량 이상의 요청 제한 - metering: 계측 - Logging: 유통되는 트래픽 로깅 - proxy 등 2. L/B & Routing: Client의 요청에 따라 적절한 backend service를 로드밸런싱(L/B: Load Balancing)하고 연결(라우팅) 3. Circuit Break: Backend service 장애 감지 및 대처 Zuul Filter는 크게 ..

    프로그래머스 - 다트 게임 문제 (자바)

    https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 굉장히 단순하게 풀이한 문제로 리팩토링을 통해서 조금더 코드를 다듬을 수 있을거 같지만 일단 글을 쓸려고 합니다.ㅎ 기본적으로 숫자면 stack에 넣고 문자일 경우 문자별 처리를 다르게 가져가서 처리했습니다. 주의할 점으로 숫자가 10까지 있어서 10인 경우 check가 필요하다는 점 스타상(*)은 첫 번째 기회에서도 나올 수 있다. 이 경우 첫 번째 스타상(*)의 점수만 2배가 된다. 즉 stack에 값이 하나 밖에 없는데 스타상이 나온 경우를 신경 써야 한다는 점 import java.util.Stack; // 프로그래머스 다트 ..

    4. Feign - [Spring Cloud를 활용한 MSA 기초 온라인 강의 실습]

    Interface 선언을 통해 자동으로 Http Client를 생성 기존 RestTemplate은 concreate 클래스라 테스트가 어려움 관심사 분리 - 서비스의 관심: 다른 리소스, 외부 서비스 호출과 리턴값 - 관심x : 어떤 URL, 어떻게 파싱할 것인가 참조하면 좋은 사이트 우형 기술 블로그 https://woowabros.github.io/experience/2019/05/29/feign.html 공식 문서 https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html#_creating_feign_clients_manually 실습 1. 의존성 ext['springCloudVersion'] = 'Finchley..

    3. Eureka - [Spring Cloud를 활용한 MSA 기초 온라인 강의 실습]

    앞선 리본 예제에서 서버 목록을 yml에 직접 넣었는데 이를 자동화 할 방법으로 유레카를 사용하게된다. 서버가 새롭게 시작되면 그것을 감지하여 목록에 자동으로 추가되고 서버가 종료되면 자동으로 목록에서 삭제하는 기능을 유레카가 제공한다고 생각하면된다. 유레카에는 유레카 서버와 유레카 클라이언트가 있습니다. 유레카 서버는 registry로 유레카에 등록된 서비스들을 관리한다 보시면 됩니다. 유레카 클라이언트는 각각의 서버 혹은 인스턴스의 시작시 유레카 서버에 자동으로 자신의 상태를 등록(설정으로 컨트롤 가능) 주기적 heartBeat를 통해서 유레카 서버에 자신이 살아 있음을 알리게 됩니다. 서버 측 설정 eureka.server.enable-self-preservation 일시적인 네트워크 장애로 인한 ..

    2. Ribbon - [Spring Cloud를 활용한 MSA 기초 온라인 강의 실습]

    리본을 설명하기 앞서 로드 밸런싱에 대해서 이해하고 가겠습니다. 어떤 어플리케이션이 다른 어플리케이션을 호출할 때 대상 어플리케이션 인스턴스가 하나밖에 없다면 어떻게 될까요 ? 그 대상앱 인스턴스가 죽거나 HTTP hang이 걸리면 서비스에 장애가 발생합니다. 그래서 보통 어플리케이션 인스턴스는 1개가 아니라 최소 2개 이상을 띄웁니다. 2개의 인스턴스에 요청을 나눠주는 친구가 로드밸런서, 요청을 나눠주는 행위를 로드 밸런싱이라고 합니다. Client LoadBalancer - Ribbon Ribbon은 Load balancing을 요청 어플리케이션 단에서 수행해주는 Client-side Load balancer Ribbon과 같은 L/B가 필요한 이유는 부하 분산을 적절하게 하여 서비스의 가용성을 최대..