2023/05 7

스프링 핵심 원리이해 - 빈 Life Cycle 콜백

스프링 빈은 아래와 같은 life cycle을 가진다. “객체생성 → 의존관계 주입?” 의존관계 주입까지 마쳐야 스프링 빈을 사용할 준비가 완료 된 것이다. 따라서 초기화 작업도 의존관계 주입이 끝난 이후에 진행해야 하는데, 이를 개발자가 어떻게 알 수 있을까? 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한, 스프링은 스프링 컨테이너가 종료되기 직전에 스프링 빈에게 소멸 콜백을 준다. “스프링 이벤트 Life Cycle” 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료 스프링은 크게 3가지 방법으로 빈 Life Cycle 콜백을 지원한다. 인터페이스(bean ..

ELK 인덱스 생명 주기(ILM) 설정하기

Index Lifecycle Policies(ILM)이란? 인덱스(다른 DB에선 테이블)을 사용자가 지정한 날짜, 크기, 문서 수 등에 도달하면 기존에 사용하던 인덱스를 처리(제거, 상태변경)하고, 새로운 인덱스를 할당한다. 현재 회사에서 사용하고 있는 ILM 정책은 인덱스 마다 다르지만, 제일 많이 사용하고 있는 게임 로그 데이터는 아래의 정책을 따른다. 인덱스 생성된지 15일이 지나면 warm 상태로 변경되어 단일 샤드로 축소 30일이 지나면 cold 상태로 변경되고, 읽기 전용 상태로 변하고, 용량이 감소 40일이 지나면 인덱스를 삭제 자세한 내용은 elastic 공식 문서를 참고하면 된다. https://www.elastic.co/guide/en/elasticsearch/reference/7.10..

무중단 배포 진행하기 2023 (2) - 젠킨스 생성 및 github과 연동하기

젠킨스 생성하기 먼저 젠킨스를 사용하는 이유부터 알아보자. 만약 젠킨스같은 CI/CD을 사용하지 않고 어떠한 작업이 있어서 소스코드를 수정하거나, 추가한다고 가정하자. 작업 이후에 배포 파일(Jar)을 만들고(빌드), 서비스가 배포되고 있는 머신에 배포파일(Jar)을 보내야한다. 그렇게 된다면, 소스 한줄 바꾸더라도, 개발자가 직접 빌드하고, 빌드된 파일을 배포하는 작업까지 매번 하기 상당히 귀찮을 것이다. 이 동작을 자동화 해주는 것이 젠킨스이다. 실무에서 젠킨스를 구축한다면, 도커, 추가 머신을 이용하여 젠킨스 서버를 따로 띄울 것 같은데, 그럴만한 여건이 안되기 때문에 젠킨스를 로컬에서 띄우기로 하였다. 해당 링크를 참고하였다. 다만 jenkins의 포트를 변경할 때 아래의 주소에서 젠킨스 설정파일..

스프링 배치 5.0 바뀐점 - Job Parameter

다양한 Job Parameter 타입 4.x 버전까지는 4개의 Type(Long, Double, String, Date)만을 지원했다. 5.0부터는 JobParameter를 커스텀해서 사용할 수 있다. 아래는 Spring Batch 5.0 변경 관련 문서에서 Job Parameter의 달라진 구현 부분이다. ---public class JobParameter implements Serializable { +++public class JobParameter implements Serializable { --- private Object parameter; +++ private T value; --- private ParameterType parameterType; +++ private Class type;..

무중단 배포 진행하기 2023 (1) - 클라우드 인스턴스 원격 접속하기

개요 토이 프로젝트로 무중단 배포 하는걸 시작하였다. 회사에서도 무중단 배포를 하고 있지만, 이미 만들어진 걸 사용하고 있었기 때문에 이해도가 부족하다고 스스로 생각하여, 직접 무중단 배포 환경을 구축해보기로 하였다. 도커를 사용하면 좋지만, 일단 무중단 배포 개념만 학습하기로 하여, 도커는 사용하지 않았고, 추후 디벨롭 과정에서 사용할 예정이다. 로컬 환경 : Mac os(DB, Jenkins) 배포 환경 : Centos 7 DB : MYSQL 배포 파일 : JAR 파일 (Spring boot, Gradle) 클라우드 인스턴스 원격 접속하기 오라클 클라우드를 사용하려 했는데, 카드 번호와 주소? 문제로 회원가입이 계속 안됐고, 결국 사내에서 개인 공부용으로 제공하는 NHN 클라우드를 사용해서 인스턴스를..

스프링 배치 5.0 바뀐점 - Job & Step 생성하는 클래스

Job & Step 생성하는 클래스 자세한 내용 : https://github.com/spring-projects/spring-batch/issues/4188 기존 @EnableBatchProcessing public class MyJobConfig { @Autowired private JobBuilderFactory jobBuilderFactory; @Bean public Job job(Step step) { return this.jobBuilderFactory.get("myJob") .start(step) .build(); } } 변경 @EnableBatchProcessing public class MyJobConfig { @Bean public Job job(JobRepository jobRepos..

스프링 배치 5.0 (2023)

사실 스프링 배치 관련 사내 스터디를 진행한지는 한 달이 넘었다. 조직이 개편되면서, 스프링 배치 관련 플젝이 우리 팀에게 왔다. 아직 관련 일감을 받진 못하였지만, 후에 작업을 원할하게 하기 위해 배치 스터디를 추진하였고, 지금 진행중이다. 스터디 진행방식은 이동욱님의 블로그인 '기억보다 기록을'의 스프링 배치 가이드를 보고 따라서 코드를 작성해보는 방식이다. 근데 해당 가이드가 낮은 버전을 사용하고 있는데, 스터디에서는 스프링 부트 3.0과 스프링 배치 5.0을 사용하기 때문에 이로 인해 deprecated된 코드들도 블로그에 기술할 예정이다. (오히려 좋아..) PS. 새로운 게임 개발 마무리 단계에 접어들었는데, 곧 다시 일주일에 최소 1개 이상의 블로그 글을 쓸 예정이다. 블로그 글이 너무 비어..

728x90