최근 쿠버네티스에 관심을 갖게 되면서 CKA 자격증 공부를 시작했습니다. 관련 지식을 넓히고자 유튜브에서 쿠버네티스 관련 컨퍼런스 영상을 찾아보던 중, 2023년에 열린 Kubernetes Community Day의 강연들이 눈에 띄었습니다. 그 중에서도 오픈소스 기여에 관심이 많았던 저는 컨트리뷰션을 주제로 한 강연을 듣고 정리해 보았습니다. 해당 강연은 이곳에서 원본으로 보실 수 있습니다.→ KCD Korea 2023: CNCF 및 Kubernetes 컨트리뷰션, 지금 여기서 시작하세요! - 손석호 이 강연은 '노코드' 방식으로 쿠버네티스 문서의 한글화에 기여하는 방법을 다루고 있습니다. 강연 내용부터 설명해 드리겠습니다. 발표자손석호님은 한국전자통신연구원(ETRI)에서 근무하며, Kubernetes..
아래 글은 한국 스프링 사용자 모임(KSUG)에서 진행된 스프링 배치 스터디 내용을 정리한 게시글입니다.DEVOCEAN에 연재 중인 KIDO님의 글을 메인 교안으로 진행되는 스터디입니다. [메인 교안 바로 가기] 안녕하세요! 오늘은 Spring Batch 관련 스터디 첫 회차에 참여한 후기를 공유하고자 합니다.왜 Spring Batch를 배워야 할까?첫 번째 스터디를 통해 스프링 배치의 개요에 대해 공부했습니다. 스터디를 시작할 때 KIDO님께서 Spring Batch를 배워야 하는 이유에 대해 설명해주셨습니다. KIDO님은 현재 DEVOCEAN에서 Spring Batch 관련 글을 연재 중이신데, 아래는 KIDO님의 말씀을 정리한 내용입니다. 스프링 배치는 배치 처리에 특화된 ‘프레임워크’입니다. 프레..
아래 글은 한국 스프링 사용자 모임(KSUG)에서 진행된 스프링 배치 스터디 내용을 정리한 게시글입니다.DEVOCEAN에 연재 중인 KIDO님의 글을 참고하여 실습한 내용을 기록했습니다. [SpringBatch 연재 01] SpringBatch 빠르게 시작하기 devocean.sk.com원본: [SpringBatch 연재 01] SpringBatch 빠르게 시작하기 1. 기본 프로젝트 구성하기@EnableBatchProcessing // 해당 애노테이션을 사용하면 배스프링 배치 모드로 동작하게 된다.@SpringBootApplicationpublic class BatchSampleApplication { public static void main(String[] args) { Spri..
아래 글은 [우아콘 2023] Kafka Streams를 활용한 이벤트 스트림 처리 삽질기를 보고 정리되었습니다.배치에서 스트림 처리로의 전환초기에는 배치 처리를 통해 배달 데이터와 라이더 데이터를 수집하고 분석했지만, 서비스 확장과 함께 데이터량이 급격히 증가하면서 여러 문제가 발생했다.배치 처리 시간의 불안정성: 평상시에는 빠르게 끝나던 배치가, 주문량이 몰리는 시간대나 주말에는 DB에 부하가 발생하여 처리 속도 문제가 발생실시간 반영의 어려움: 배치 처리 주기 사이에 들어온 데이터는 실시간 반영이 불가능해 이상 탐지와 같은 작업이 지연이러한 이유로 대량의 데이터를 실시간으로 처리할 수 있는 스트림 처리로의 전환을 결심하게 되었다고 합니다.Kafka Streams 선택 이유Apache Flink vs..
선착순 쿠폰 발급 시스템을 구현하는 방법에 대해 궁금하여 공부하며 기록 해보았습니다.1. 요구사항 정의이벤트를 진행하며, 선착순 100명에게만 할인 쿠폰을 지급하고자 합니다. 시스템은 아래의 조건을 만족해야 합니다.선착순 100명에게만 지급되어야 한다.많은 유저가 동시에 쿠폰을 요청할 때 트래픽을 버틸 수 있어야 한다.쿠폰 발급 시 데이터 정합성을 유지해야 한다.이러한 요구사항을 충족하기 위해 트랜잭션 관리, 동시성 처리, 비동기 시스템 구성 등 다양한 기술적 요소를 고려해야 합니다. 동시에 쿠폰 발급이 이루어질 때, DB에 과부하를 주지 않고 처리할 수 있는 방법도 필요합니다.2. 문제 해결 방안(1) Redis를 활용한 문제 해결Redis는 싱글 스레드 기반으로 동작하며, 내부적으로는 여러 가지 고유..
애플리케이션에서 여러 사용자가 동시에 같은 데이터를 수정하려 할 때, 동시성 문제(Race Condition)가 발생할 수 있습니다. 이런 문제를 해결하기 위한 방법으로 여러 접근 방식이 있습니다. 이번 글에서는 Spring에서 동시성 문제를 해결하기 위한 몇 가지 대표적인 방법을 살펴보겠습니다. 1. synchronized 키워드를 이용한 해결Java에서 가장 기본적인 동시성 처리 방법 중 하나는 synchronized 키워드를 사용하는 것입니다. 이를 통해 하나의 프로세스 내에서 동시에 여러 스레드가 동일한 리소스에 접근하지 못하도록 제어할 수 있습니다. 아래는 synchronized를 사용한 예시입니다.public synchronized void decreaseQuantity(Long id, Lon..