전체 글
728x90

karlaLog

728x90

    Kubernetes 인그레스(Ingress), 로드밸런서 LoadBalancer, metallb

    Ingress, Ingress Controller 인그레스를 사용하면 L7의 웹 요청을 해석해서 단일 IP, 단일 포트로 다수의 도메인과 서비스로 연결할 수 있음 쿠버네티스에서 기본적으로 지원하는 인그레스 오브젝트는 클라우드 환경이 아니면 사용할 수 없음 클라우드에서 인그레스를 생성하면 외부에 게이트웨이를 생성하고 각 기능에 맞게 서비스에 연결 쿠버네티스에서 Ingress를 사용하기 위해서는 두 가지가 필요 첫 번째는 YAML 파일에서 kind: Ingress 로 정의되는 Ingress 오브젝트 두 번째는 Ingress 규칙이 적용될 Ingress Controller YAML 파일로부터 Ingress를 생성해도 아무 일도 일어나지 않음 Ingress는 단지 Ingress 규칙을 정의하는 선언적인 오브젝트..

    [CICD] Jenkins + ArgoCD + k8s | CI, 젠킨스 파이프라인, Jenkinsfile, MSA

    GitHub - Guts-Gun/KITe_backendContribute to Guts-Gun/KITe_backend development by creating an account on GitHub.github.com 구축 순서1. Jenkins Pipeline & Github webhook 설정2. Jenkinsfile 작성3. ArgoCD 구축 Jenkins PipelineJob들을 순차적 혹은 병렬적으로 실행시키거나 작성한 스크립트로 이벤트들을 연속적으로 실행시키는 등의 일을 지원하는 기능Job 하나 작성할 때 대부분 GUI로 제공받아 마우스로 체크해서 설정했다면 Pipeline은 이러한 내용들을 스크립트를 통해 더 딥하고 유연하게 작성할 수 있음작성하려는 배포 플로우가 복잡하다면 pipeline ..

    Spring Event, 스프링 이벤트, ApplicationEventPublisher

    Spring Event 스프링 프레임워크를 사용할 때 빈(Bean) 간 데이터를 주고받는 방식 이벤트를 발행(Publish)하고 이벤트를 수신 또는 구독하여 소비(Listen/Subscribe)하는 기능을 제공 기존 로직에 트리거와 같은 후처리를 추가하면서 관심사 분리 (낮은 결합도) 1. 이벤트 클래스 이벤트 클래스는 이벤트를 처리하는 데 필요한 최소한의 데이터 포함하여 생성 이너 클래스 생성하여 사용 가능 @Getter @RequiredArgsConstructor public class AddPersonEvent { PersonDto personDto; } 2. 이벤트 디스패처 이벤트 발행을 위해 스프링에서 제공하는 ApplicationEventPublisher을 사용 @Slf4j @Service @..

    [JPA] 변경감지 Dirty Checking, @Transactional, @DynamicUpdate

    변경감지 변경감지는 트랜잭션 커밋시 영속화된 Entity에서 가지고 있었던 최초 정보(스냅샷)와 바뀐 Entity 정보를 비교해서 바뀐 부분을 update 해주는기능 1. 클라이언트에서 식별자를 포함한 데이터를 넘김 2. 식별자(id)를 통해서 DB에서 데이터 조회 후, 조회된 데이터를 영속화 . 클라이언트에서 넘어온 값들을 토대로 기존의 데이터를 새로운 데이터로 변경 : 변경점 발생 4. 트랜잭션 커밋 5. JPA에서 변경점들을 확인하고 변경해야할 것에 맞게 DB 쿼리를 실행 : 변경 감지 (Dirty checking) 변경감지 조건 변경하려는 Entity가 영속 상태여야함 (영속성 컨텍스트 안에 관리되는 상태) 트랜잭션 안에 묶여 있어야함 트랜잭션이 제대로 커밋되어야함 (그래야 flush가 작동하기 ..

    [JPA] fetch join, EntityGraph, N+1, Pagination, firstResult/maxResults specified with collection fetch; applying in memory

    1. 즉시로딩jpql을 우선적으로 select하기 때문에 즉시로딩을 이후에 보고 또다른 쿼리가 날아가 N+12. 지연로딩지연로딩된 값을 select할 때 따로 쿼리가 날아가 N+13. Fetch Join지연로딩의 해결책사용될 때 확정된 값을 한번에 join에서 select해서 가져옴Pagination이나 2개 이상의 collection join에서 문제가 발생4. EntityGraphHibernate의 Jpql 구문에서의 fetch는 존재하지는 않지만 기존과 마찬가지로 fetch join을 통해 바로 조회할 수 있음@Repositorypublic interface PersonRepository extends JpaRepository, JpaSpecificationExecutor { @NotN..

    Spring Batch, 배치와 스케줄러의 차이, Job, Tasklet, Chunk

    배치 배치는 실시간으로 처리하는것이 아닌 처리할 작업물들을 모아 한번에 처리하는 것 예를들어 1년간 접속하지않은 모든 회원들을 휴먼계정으로 처리하는 등 일반적인 비즈니스로직이 아닌 상황에 대해서 처리해주는 프로세스 배치와 스케줄러의 차이 배치 스캐쥴러 일괄 처리 정해진 시간에 자동으로 실행 사용자의 명령이 있을 때 실행 주기적으로 실행 Batch Job을 관리(Job을 구동하거나 실행시키는 기능 X ) Job, Tasklet, Chunk Job 배치 처리 과정을 하나의 단위로 만든 객체 배치 처리 과정에 있어 전체 계층의 최상단에 위치 1개 이상의 Step을 가짐 Job 안에는 여러 개의 Step이 존재하고, Step 안에는 Tasklet 또는 {Reader, Processor, Writer} 묶음이 존..