728x90

전체 글 506

스프링 배치 도메인 이해

JOB 배치 계층 구조에서 가장 상위 개념으로서 하나의 배치작업 자체를 의미함 api 서버의 접속 로그 데이터를 통계 서버로 옮기는 배치 = JOB Job Configuration 을 통해 생성되는 객체 단위로서 배치작업을 어떻게 구성하고 실행할 것인지 전체적으로 설명하고 명세해 놓은 객체 배치 Job 을 구성하기 위한 최상위 인터페이스를 스프링이 기본적인 구현체를 제공한다. 여러 Step을 포함하고 있는 컨테이너로서 반드시 한 개이상의 step 으로 구성 된다. 기본 구현체 SimpleJob = 순차적으로 step 을 실행시키는 job , 모든 job에서 유용하게 쓸수 있는 표준 기술을 가지고 있다. FlowJob = 특정한 조건과 흐름에 따라 step을 구성하여 실행시키는 job, flow 객체를 실..

WEB/Spring Batch 2023.02.17

스프링 배치 소개 + 시작

자바 기반 표준 배치 기술이 없어서 탄생함 배치핵심패턴 read = 데이터 베이스, 파일 , 큐에서 다량의 데이터 조회 process = 특정 방법으로 데이터를 가공한다. write = 데이터를 수정된 양식으로 다시 저장한다. ETL(Extract , Transform , Load) 와 유사하다. @EnableBatchProcessing = 스프링 배치가 동작하기 위해 선언해야 하는 어노테이션 총 4개의 설정클래스를 실행시키며 스프링 배치의 모든 초기화 및 실행 구성이 이루어진다. 스프링 부트 배치의 자동 설정 클래스가 실행됨으로 빈으로 등록된 모든 Job을 검색해서 초기화와 동시에 Job을 수행하도록 구성됨 스프링 배치 초기화 설정 클래스 1. BatchAutoConfiguration 스프링 배치가 초..

WEB/Spring Batch 2023.02.16

외부 설정을 이용한 자동 구성

Environment 추상화와 프로퍼티 imports 를 selector 가 로딩을하고 class level @Conditional 을 확인하고 method level(@Bean을 생성하는 팩토리메소드) 의 @Conditional을 확인하게 된다. custom bean구성정보는 개발자가 추가한 (custom tomcat) 팩토리 빈 메소드를 의미한다. 기본 tomcat port를 바꾸고 싶다든지 다양한 property를 변경을 가능하게 한다. 읽어와서 사용을 할 수 있다. getProperty에 넣는 인자는 다음 사진처럼 4가지로 spring boot가 알아서 converting 해서 인식을 하게 된다. 자동 구성에 Environment 프로퍼티 적용 @MySpringBootApplication publ..

WEB/Spring Boot 2023.02.13

자동 구성 기반 애플리케이션 + 조건부 자동 구성

테스트 코드를 이용한 테스트 public class HelloApiTest { @Test void helloApi() { TestRestTemplate rest = new TestRestTemplate(); ResponseEntity res = rest.getForEntity("http://localhost:8080/hello?name={name}", String.class, "Spring"); assertThat(res.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(res.getHeaders().getFirst(HttpHeaders.CONTENT_TYPE)).startsWith(MediaType.TEXT_PLAIN_VALUE); assertThat(re..

WEB/Spring Boot 2023.02.09

Building makemore Part 2: MLP

현재는 bigram이니 27개의 row만 존재하지만 2, 3개의 input 기준으로 다음 단어를 예측하게 되면 27^2 , 27^3 의 row가 생겨서 점점 W.shape이 말도 안되게 커지게 된다. https://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf 논문은 word modeling 우린 character modeling 이지만 아이디어는 똑같이 적용할 수 있다. word를 30차원으로 embedding한다. 비슷한 의미들은 embedding space에서 비슷한 곳에 분포하게 된다. 3개의 word 를 기준으로 다음 word를 예측하는 모델이다. C.shape는 (17000,30) 으로 17000은 총 word갯수이고 30은 우리가 embbedin..

AI/Andrej Karpathy 2023.02.04

독립 실행형 서블릿 애플리케이션

public class SpringbootmineApplication { public static void main(String[] args) { ServletWebServerFactory serverFactory = new TomcatServletWebServerFactory(); WebServer webServer = serverFactory.getWebServer(); webServer.start(); } } @SpringBootApplication annotation 없이 직접 tomcat을 기동 시키는 과정이다. public class HellobootApplication { public static void main(String[] args) { GenericApplicationContext ..

WEB/Spring Boot 2023.02.02

이게 돼요? 도커 없이 컨테이너 만들기 / if(kakao)2022

흥미 유발 container 기반으로 올린 busybox의 root file system 은 overlay이다. process가 다르다. container는 2개이고 local은 여러개이다. ip link , hostname도 다 다르고 , id를 쳤을때 container도 local 도 root 이 나오는데 이둘은 과연 같은 root일까? container file system 프로세스를 가두고 , 탈옥을 막고 , 중복을 해결하자 chroot를 기반으로 process가 Fake root 밖으로 나가지 못하게 한다. 필요한 것들을 fake root 안으로 복사해야 한다. docker export $(docker crete nginx) | tar -C nginx-root -xvf - 이번엔 남들이 만들어놓..

Cloud/Docker 2023.01.31

행동 관련 디자인 패턴

책임 연쇄 패턴 public static void main(String[] args) { RequestHandler chain = new AuthRequestHandler(new LoggingRequestHandler(new PrintRequestHandler(null))); Client client = new Client(chain); client.doWork(); } spring security에서 쓰이는 FilterChain 처럼 여러 handler chain을 만든것이다. 하나의 클래스가 하나의 책임을 지니고 조건에 맞으면 일을 처리하고 다름 handler에게 넘겨주는 방식이다. @WebFilter(urlPatterns = "/hello") public class MyFilter implement..

WEB/Design Pattern 2023.01.29
728x90