분류 전체보기 317

Google JIB

등장 배경 Jib 이전에 도커 이미지를 만들기 위해서는 dockerfile을 작성하고 dockerignore 파일을 작성하고 디펜던시들을 따로 분리해서 저장하고 분리된 의존성을 하나의 레이어로 관리하고 최대한 캐시를 활용해 다시 한번 dockerfile을 변경해야 했다. 이 모든 과정이 복잡하고 학습 난이도는 높으며 자주 하는 작업이 아니었기에 이전에 어떻게 했는지 다시 찾아보는 시간이 필요했다. 그래서 이 모든 과정을 단순하게 만들기 위해 Jib가 등장했다. Jib의 장점 로컬 Docker 의존성 제거 Jib는 Dockerfile 작성 없이도 빌드 환경에 Docker가 없이도 이미지를 빌드할 수 있다. 이는 Jib가 컨테이너 이미지를 생성할 때, 애플리케이션 파일과 의존성을 레이어로 나누어 구성하는 방..

JVM 2024.01.30

ISA 계좌에 대한 이해(2024년 개정)

ISA(개인종합자산관리계좌)는 다양한 금융상품을 선택하여 포트폴리오를 구성하고 통합 관리할 수 있는 계좌이다. 중기적인 목돈 마련이 주목적으로, 3년에서 5년의 기간 동안 운용된다. 계좌 개설 19세 이상 누구나 개설 가능하다. 15 ~ 19세는 소득이 있다면 가능하다. 모든 금융기관을 통틀어 한 사람당 하나의 계좌만 개설 가능하다. 금융소득종합과세자는 '국내형 ISA'만 가능하다. 세제 혜택이 더 많은 서민형이 존재한다. 국내형 ISA 국내주식과 국내펀드만 투자 가능하며 15.4% 과세한다. 서민형 ISA 연봉 5,000 이하, 종합소득 3,800 이하 개인 사업자가 신청가능하다. '개인종합자산관리계좌 가입용 소득확인 증명서'를 제출해야 한다. 금융소득종합과세자 연간 금융소득이 2천만 원을 초과하고, ..

금융 2024.01.28

연금저축과 IRP의 차이

연금을 크게 나누면 세제적격연금(세금 공제)과 세제비적격연금이 있다. 연금저축펀드와 개인형 IRP(Individual Retirement Pension)는 세제적격연금으로 통틀어 연금계좌라고 부른다. 세제비적격연금에는 연금보험, 종신보험, 변역연금 등 보험사 상품들이 있다.(비추천!!) 계좌 개설공통점스마트폰을 통해 간편하게 개설할 수 있다.은행과 증권사를 통해 계좌를 개설할 수 있다.연금저축증권사와 은행이 제공하는 대표적인 세액공제용 연금상품이다.'연금저축'이란 네 글자가 반드시 들어가야 한다.나이에 관계없이 누구나 개설 가능하다.IRP근로자퇴직급여보장법에 근거하여 만들어진 개인형 퇴직연금 중 하나이다.소득이 있는 사람만 개설 가능하며, 소득이 없어져도 계좌는 유지된다.퇴직금 수령용 또는 개인 저축용을..

금융 2024.01.27

RabbitMQ, Apache Kafka, AWS SQS 비교

메시지 저장 및 전달 방식RabbitMQ는 메시지를 큐에 안전하게 저장하고 전달하며, Kafka는 영속적으로 메시지를 저장하고 여러 소비자에게 전달하고, SQS는 안전하게 메시지를 큐에 저장하고 전달한다. RabbitMQ메시지를 큐에 저장하고, 이를 소비자에게 전달한다. RabbitMQ는 메시지를 저장하는 역할을 중요하게 여긴다. 따라서 일시적인 네트워크 문제 또는 소비자가 메시지를 처리하지 못할 경우에도 안전하게 메시지를 보관한다.KafkaKafka는 메시지를 영속적으로 저장하고, 이를 여러 소비자 그룹에게 동시에 전달할 수 있다. 메시지는 토픽에 기록되며, 이를 구독하는 모든 소비자에게 전달된다. 또한, Kafka는 일반적으로 디스크에 메시지를 저장하여 데이터의 장기 보존이 가능하다.SQSSQS는 메..

DevOps 2024.01.13

모니터링(Micrometer, Prometheus, Grafana)

Micrometer 애플리케이션의 메트릭 수집을 단순화하고, JVM 기반의 애플리케이션에서 사용하기 쉬운 메트릭 API를 제공하는 라이브러리이다. 특히 스프링 기반의 애플리케이션에서는 Micrometer가 스프링의 메트릭 제공에 통합되어 사용된다. 또한, 다양한 모니터링 시스템과의 통합을 지원하여 Prometheus, Grafana, InfluxDB, Datadog 등 다양한 백엔드로 메트릭을 전송할 수 있다. 여러 Micrometer의 기능 중 하나로 Timer가 있다. Timer는 특정 코드 블록이나 메서드의 실행 시간을 측정하고 해당 지표를 메트릭으로 수집한다. 호출 빈도와 지연 시간을 시계열로 기록하여 애플리케이션의 동작을 모니터링할 수 있다. @Timed 어노테이션은 Micrometer에서 제공..

JVM/SpringCloud 2024.01.03

Zipkin

ZipkinZipkin은 분산 시스템에서의 추적 및 모니터링을 위한 오픈 소스 소프트웨어이다. 주로 마이크로서비스 아키텍처에서 사용되며 서비스 간 통신과 연관된 각 단계의 지연 시간 및 성능을 추적하여 문제를 식별하고 해결하는 데 도움이 된다.SpanSpan은 하나의 요청에 사용되는 작업의 단위이다. 예를 들어, 서비스 간의 요청 또는 로컬 작업과 같은 작업 단위를 나타낼 수 있다. Span은 시작 시간, 종료 시간, 태그 등의 정보를 포함하여 특정 작업에 대한 세부 정보를 기록한다.TraceTrace는 관련된 여러 Span들의 모음으로, 전체 작업의 흐름을 나타낸다. 서비스 간의 요청이 발생하면, 해당 요청에 대한 Span이 생성되고, 이러한 Span들이 모여 Trace를 형성한다. Trace는 전체 ..

JVM/SpringCloud 2024.01.03

Resilience4J - CircuitBreaker

Circuit Breaker 서킷 브레이커는 연결의 성공/실패를 카운트하여 실패율이 임계치를 넘어섰을 때 자동적으로 접속을 차단하는 시스템이다. 마이크로서비스 아키텍처에서 서비스 간 통신에서 발생할 수 있는 장애와 지연으로부터 전체 시스템의 안정성을 유지하는데 도움이 되는 중요한 디자인 패턴이다. Sliding Window 서킷 브레이커는 슬라이딩 윈도우를 통해 호출 결과를 저장하고 집계한다. 슬라이딩 윈도우의 방식은 마지막 N개의 호출 결과를 집계하는 카운트 기반과 마지막 N초 간 일어난 호출 결과를 집계하는 시간 기반이 있다. Circuit Breaker State 닫힌(Closed) 상태 초기 상태로, 모든 호출이 허용된다. 서비스 호출 중 에러 비율이 설정된 임계값을 넘어가면 서킷 브레이커는 열린..

JVM/SpringCloud 2024.01.02

Kafka를 활용한 데이터 베이스 비동기 통신

이벤트 중심 아키텍처 JDBC 또는 JPA를 사용하여 DB에 직접 접속하는 경우, 애플리케이션과 DB 간의 동기 상태로 인해 서비스 지연 및 다른 서비스에 대한 영향이 발생할 수 있다. 또한, 트래픽이 증가하거나 DB Locking이 발생할 경우 성능 문제가 발생할 수 있다. 이러한 문제를 해결하기 위해 Kafka Sink Connector를 사용하면 비동기 방식의 데이터 처리, 데이터 전달의 효율적인 관리, 안정적인 클러스터 구성, 서비스 간의 느슨한 결합, 이벤트 중심 아키텍처 등 다양한 이점을 얻을 수 있습니다. 특히 대용량 및 다중 서비스 환경에서는 MQ와 같은 서비스의 도입이 유용할 수 있다. Dto data class KafkaOrderDto( val schema: Schema, val pay..

JVM/SpringCloud 2024.01.01

Kafka를 활용한 마이크로 서비스간 비동기 통신

라이브러리 implementation("org.springframework.kafka:spring-kafka") kafka Consumer 설정 @Configuration @EnableKafka class KafkaConsumerConfig { // 토픽에 접속하기 위한 설정 정보 @Bean fun consumerFactory(): ConsumerFactory { val properties = mapOf( ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG to "127.0.0.1:9092", ConsumerConfig.GROUP_ID_CONFIG to "consumerGroupId", ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG to StringD..

JVM/SpringCloud 2024.01.01

Apache Kafka

Kafka 카프카는 분산 스트리밍 플랫폼으로, 대량의 데이터를 높은 처리량으로 실시간으로 처리할 수 있도록 설계된 오픈 소스 메시지 브로커이다. Jay Kreps, Neha Narkhede, 그리고 Jun Rao가 LinkedIn에서 개발한 후에 Apache 소프트웨어 재단에 기증되어 오픈 소스 프로젝트로 진화했다. 카프카는 대용량의 데이터 스트림을 효율적으로 수집, 저장, 처리 및 전달하는 데 사용되며 이벤트 주도 아키텍처 구축에 적합하다. 주로 로그 및 이벤트 스트리밍, 데이터 파이프라인, 실시간 데이터 분석 등의 분야에서 활용된다. 분산 아키텍처 및 확장성: Kafka는 분산 아키텍처로 설계되어 있어 수평 확장이 용이하며, 새로운 브로커를 추가하여 클러스터를 쉽게 확장할 수 있다. 내구성 및 복제:..

DevOps 2023.12.30
728x90