Java
-
이전 시간에 스프링에서 사용하는 어노테이션들에 대해서 알아보았습니다. 이는 어떻게 동작하며 내가 직접 만든다면 어떤 식으로 구현할 수 있는 지에 대한 포스팅을 작성해 보려고 합니다! [Spring] 어노테이션에 관하여!스프링을 사용하며 어노테이션을 정말 많이 사용하는데, 이에 대한 깊은 내용을 한번 정리할 필요성을 느껴 이번 기회를 통해 정리해 보려고 합니다! 🟢 어노테이션이란 ?어노테이션(Annotation)seung-seok.tistory.com저번 포스팅에 스프링에서 많이 사용하는 어노테이션들에 대해서 정리를 해봤습니다. 이번에는 이를 직접 만들어보며 작동 원리에 대한 깊은 이해를 얻어보도록 하겠습니다!🟢 Spring Annotation 의 원리와 Custom Annotation 만들어보기Sp..
[Spring] Custom Annotation 만들어보기!이전 시간에 스프링에서 사용하는 어노테이션들에 대해서 알아보았습니다. 이는 어떻게 동작하며 내가 직접 만든다면 어떤 식으로 구현할 수 있는 지에 대한 포스팅을 작성해 보려고 합니다! [Spring] 어노테이션에 관하여!스프링을 사용하며 어노테이션을 정말 많이 사용하는데, 이에 대한 깊은 내용을 한번 정리할 필요성을 느껴 이번 기회를 통해 정리해 보려고 합니다! 🟢 어노테이션이란 ?어노테이션(Annotation)seung-seok.tistory.com저번 포스팅에 스프링에서 많이 사용하는 어노테이션들에 대해서 정리를 해봤습니다. 이번에는 이를 직접 만들어보며 작동 원리에 대한 깊은 이해를 얻어보도록 하겠습니다!🟢 Spring Annotation 의 원리와 Custom Annotation 만들어보기Sp..
2025.06.06 -
스프링을 사용하며 어노테이션을 정말 많이 사용하는데, 이에 대한 깊은 내용을 한번 정리할 필요성을 느껴 이번 기회를 통해 정리해 보려고 합니다! 🟢 어노테이션이란 ?어노테이션(Annotation) 은 사전적으로 "주석"이라는 의미를 가지고 있습니다. 자바에서는 @를 이용하여 주석처럼 달아 특수한 의미를 부여해줍니다. 즉 어노테이션은 주로 프로그래밍 언어에서 특정 기능이나 동작을 정의하거나 설명하는데 사용되는 메타데이터를 말하며 소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해주는 문법 요소입니다. 어노테이션의 사용은 주로 두 가지 이유에서 비롯됩니다. 1. 코드의 가독성 향상어노테이션은 코드의 특정 부분이 어떤 목적을 가지고, 어떻게 동작하는지를 명확하게 표현할 수..
[Spring] 어노테이션에 관하여!스프링을 사용하며 어노테이션을 정말 많이 사용하는데, 이에 대한 깊은 내용을 한번 정리할 필요성을 느껴 이번 기회를 통해 정리해 보려고 합니다! 🟢 어노테이션이란 ?어노테이션(Annotation) 은 사전적으로 "주석"이라는 의미를 가지고 있습니다. 자바에서는 @를 이용하여 주석처럼 달아 특수한 의미를 부여해줍니다. 즉 어노테이션은 주로 프로그래밍 언어에서 특정 기능이나 동작을 정의하거나 설명하는데 사용되는 메타데이터를 말하며 소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해주는 문법 요소입니다. 어노테이션의 사용은 주로 두 가지 이유에서 비롯됩니다. 1. 코드의 가독성 향상어노테이션은 코드의 특정 부분이 어떤 목적을 가지고, 어떻게 동작하는지를 명확하게 표현할 수..
2025.06.04 -
🟢 Java 의 동기 / 비동기 / 멀티 스레드Java 의 동기, 비동기, 멀티 스레드의 개념은 필수적이라고 할 수 있습니다. 해당 개념들에 대해 먼저 간략하게 알아보겠습니다. ▪️ 동기 (Synchronous)하나의 작업이 끝나야 다음 작업을 수행할 수 있습니다. 순차적으로 실행되며, 이전 작업이 끝날 때까지 대기합니다.String result = getData(); // getData()가 끝나야 다음 줄 실행System.out.println(result); ▪️ 비동기 (Asynchronous)작업을 요청하고 바로 다음 작업을 진행합니다. 결과는 나중에 콜백, Future 등으로 받을 수 있습니다.병렬은 아닙니다. 단지 기다리지 않고 다음 코드로 넘어가는 방식입니다. ex) CompletableF..
[Spring] 비동기, @Async🟢 Java 의 동기 / 비동기 / 멀티 스레드Java 의 동기, 비동기, 멀티 스레드의 개념은 필수적이라고 할 수 있습니다. 해당 개념들에 대해 먼저 간략하게 알아보겠습니다. ▪️ 동기 (Synchronous)하나의 작업이 끝나야 다음 작업을 수행할 수 있습니다. 순차적으로 실행되며, 이전 작업이 끝날 때까지 대기합니다.String result = getData(); // getData()가 끝나야 다음 줄 실행System.out.println(result); ▪️ 비동기 (Asynchronous)작업을 요청하고 바로 다음 작업을 진행합니다. 결과는 나중에 콜백, Future 등으로 받을 수 있습니다.병렬은 아닙니다. 단지 기다리지 않고 다음 코드로 넘어가는 방식입니다. ex) CompletableF..
2025.06.03 -
Stream 과 for 문의 성능 차이에 대한 질문을 받았습니다. 평소에 많이 사용하는 Stream API 에 대해 깊이 있게 정리할 필요성을 느껴 이를 글로 작성해보려고 합니다. ✅ Stream API 란자바 8부터 도입된 Stream API 는 데이터를 선언형으로 처리할 수 있게 해주는 강력한 도구입니다. 반복문 위주의 전통적인 방식에서 벗어나 간결하고 가독성 좋은 코드를 작성할 수 있으며, 병렬 처리와 최적화에도 용이한 장점을 지니고 있습니다. Stream 은 컬렉션(List, Set 등) 의 요소들을 함수형 스타일로 처리할 수 있도록 해주는 기능입니다. 여기서 말하는 Stream 은 I/O Stream 과는 다르며, 데이터의 흐름을 추상화한 것이라고 이해하면 됩니다. 왜 Stream 을 사용하는가..
[Java] Stream API 에 관하여Stream 과 for 문의 성능 차이에 대한 질문을 받았습니다. 평소에 많이 사용하는 Stream API 에 대해 깊이 있게 정리할 필요성을 느껴 이를 글로 작성해보려고 합니다. ✅ Stream API 란자바 8부터 도입된 Stream API 는 데이터를 선언형으로 처리할 수 있게 해주는 강력한 도구입니다. 반복문 위주의 전통적인 방식에서 벗어나 간결하고 가독성 좋은 코드를 작성할 수 있으며, 병렬 처리와 최적화에도 용이한 장점을 지니고 있습니다. Stream 은 컬렉션(List, Set 등) 의 요소들을 함수형 스타일로 처리할 수 있도록 해주는 기능입니다. 여기서 말하는 Stream 은 I/O Stream 과는 다르며, 데이터의 흐름을 추상화한 것이라고 이해하면 됩니다. 왜 Stream 을 사용하는가..
2025.05.22 -
성능 고도화를 위해 Redis 의 분산락을 사용하여 쿠폰 발급에 대한 성능을 최적화 해봤습니다. 성능을 보다 깊게 파보며 MySQL 과 Redis 락이 많은 트래픽에서 어디까지 성능을 낼 수 있는 지에 대한 검증을 이 글을 통해서 풀어보겠습니다! 이전에 선착순 이벤트에서 다뤘던 두가지 락에 대해서 직접 성능 테스트를 해보고 "왜 분산락을 사용했는지", "DB락보다 성능이 어떻게 얼마나 좋은지" 등에 대한 것들을 공유하며 깊은 이해를 해보려고 합니다!이에 대해 자세히 궁금하신 분은 이전의 포스트를 읽고 오시는 것을 추천드립니다! [Spring] 선착순 이벤트를 위한 모든 것 with Redis선착순 쿠폰 발급 시스템을 진행하며 다뤘던 내용들이 너무나도 유용했고 재밌었기에 이를 공유하고 싶다는 욕심이 생겨..
[Spring] MySQL 과 Redis 의 Lock 성능비교 with k6s성능 고도화를 위해 Redis 의 분산락을 사용하여 쿠폰 발급에 대한 성능을 최적화 해봤습니다. 성능을 보다 깊게 파보며 MySQL 과 Redis 락이 많은 트래픽에서 어디까지 성능을 낼 수 있는 지에 대한 검증을 이 글을 통해서 풀어보겠습니다! 이전에 선착순 이벤트에서 다뤘던 두가지 락에 대해서 직접 성능 테스트를 해보고 "왜 분산락을 사용했는지", "DB락보다 성능이 어떻게 얼마나 좋은지" 등에 대한 것들을 공유하며 깊은 이해를 해보려고 합니다!이에 대해 자세히 궁금하신 분은 이전의 포스트를 읽고 오시는 것을 추천드립니다! [Spring] 선착순 이벤트를 위한 모든 것 with Redis선착순 쿠폰 발급 시스템을 진행하며 다뤘던 내용들이 너무나도 유용했고 재밌었기에 이를 공유하고 싶다는 욕심이 생겨..
2025.04.22 -
이전에 작성했던 선착순 이벤트의 동시성까지는 제어해냈다. 하지만 많은 트래픽에서도 고성능을 내기 위한 최적화, 그 이야기 [Spring] 선착순 이벤트를 위한 모든 것 with Redis선착순 쿠폰 발급 시스템을 진행하며 다뤘던 내용들이 너무나도 유용했고 재밌었기에 이를 공유하고 싶다는 욕심이 생겨 이 글을 작성한다. 들어가기 앞서, 간만에 글을 작성하려고 하니 너무seung-seok.tistory.com 이전까지 작성했던 글의 연장편입니다. MySQL 과 Redis 를 사용한 분산락을 활용해 동시성 제어까지는 이뤄냈으나, 이게 더 많은 트래픽에서도 고성능을 낼 수는 없다는 생각이 듭니다. 이제는 최적화 하는 과정, 그 이야기에 대해서 말해볼까 합니다. 💡 현재 상황을 직시해 봅시다현재 설계된 서비..
[Spring] 선착순 이벤트를 위한 모든 것 with Redis 고도화!이전에 작성했던 선착순 이벤트의 동시성까지는 제어해냈다. 하지만 많은 트래픽에서도 고성능을 내기 위한 최적화, 그 이야기 [Spring] 선착순 이벤트를 위한 모든 것 with Redis선착순 쿠폰 발급 시스템을 진행하며 다뤘던 내용들이 너무나도 유용했고 재밌었기에 이를 공유하고 싶다는 욕심이 생겨 이 글을 작성한다. 들어가기 앞서, 간만에 글을 작성하려고 하니 너무seung-seok.tistory.com 이전까지 작성했던 글의 연장편입니다. MySQL 과 Redis 를 사용한 분산락을 활용해 동시성 제어까지는 이뤄냈으나, 이게 더 많은 트래픽에서도 고성능을 낼 수는 없다는 생각이 듭니다. 이제는 최적화 하는 과정, 그 이야기에 대해서 말해볼까 합니다. 💡 현재 상황을 직시해 봅시다현재 설계된 서비..
2025.03.21 -
선착순 쿠폰 발급 시스템을 진행하며 다뤘던 내용들이 너무나도 유용했고 재밌었기에 이를 공유하고 싶다는 욕심이 생겨 이 글을 작성한다. 들어가기 앞서, 간만에 글을 작성하려고 하니 너무나도 어색하면서도 설렘이 공존합니다. 제가 개발한 것의 과정에 대한 기록과 회고, 그리고 공유의 소중함을 느끼고 다시 한번 꾸준하게 포스팅하는 습관을 길러보려고 합니다!🟢 선착순 이벤트를 위한 모든 것 with Redis이전에 고모가 임영웅님의 팬이여서 티켓팅을 몇번 도와드렸던 경험이 있는데 하늘에서 별 따기 수준의 난이도였습니다. 3일의 일정에 100만명이 넘는 사람들이 몰리는 것을 보며 수강신청은 껌이였나 ? 를 느끼기도 했습니다. 이러한 과정을 수차례 겪으며 대체 어떤 사람이 이것에 성공하는 거지 ? 라는 물음에서 아..
[Spring] 선착순 이벤트를 위한 모든 것 with Redis선착순 쿠폰 발급 시스템을 진행하며 다뤘던 내용들이 너무나도 유용했고 재밌었기에 이를 공유하고 싶다는 욕심이 생겨 이 글을 작성한다. 들어가기 앞서, 간만에 글을 작성하려고 하니 너무나도 어색하면서도 설렘이 공존합니다. 제가 개발한 것의 과정에 대한 기록과 회고, 그리고 공유의 소중함을 느끼고 다시 한번 꾸준하게 포스팅하는 습관을 길러보려고 합니다!🟢 선착순 이벤트를 위한 모든 것 with Redis이전에 고모가 임영웅님의 팬이여서 티켓팅을 몇번 도와드렸던 경험이 있는데 하늘에서 별 따기 수준의 난이도였습니다. 3일의 일정에 100만명이 넘는 사람들이 몰리는 것을 보며 수강신청은 껌이였나 ? 를 느끼기도 했습니다. 이러한 과정을 수차례 겪으며 대체 어떤 사람이 이것에 성공하는 거지 ? 라는 물음에서 아..
2025.03.20 -
'가상 면접 사례로 배우는 대규모 시스템 설계 기초' 책을 읽고 직접 구현하는 SNS 서비스 프로젝트, 이를 진행하며 남기는 기록. 🟢 MSA 기반 SNS 서비스 with AWS EKS가상 면접 사례로 배우는 대규모 시스템 설계 기초 책을 읽으며 11장, 뉴스 피드 시스템 설계를 재미있게 읽었다. 이를 직접 구현해 보고 싶다는 욕심이 생겨 MZ 세대에 맞는 SNS 서비스를 구현해 보기로 한다. 📃 요구사항 Grouping 했을 때 크게 5개의 도메인, 서비스가 필요하다. Timeline ServerUser ServerFeed ServerImage ServerNotification Server 내가 생각하는 주요 설계사항은 아래와 같다. 1. 유저의 개념은 팔로워(본인이 팔로우하고 있는 사람)와 팔로잉..
[Spring] MSA 기반 SNS 서비스 with AWS EKS [설계 / AWS 설정]'가상 면접 사례로 배우는 대규모 시스템 설계 기초' 책을 읽고 직접 구현하는 SNS 서비스 프로젝트, 이를 진행하며 남기는 기록. 🟢 MSA 기반 SNS 서비스 with AWS EKS가상 면접 사례로 배우는 대규모 시스템 설계 기초 책을 읽으며 11장, 뉴스 피드 시스템 설계를 재미있게 읽었다. 이를 직접 구현해 보고 싶다는 욕심이 생겨 MZ 세대에 맞는 SNS 서비스를 구현해 보기로 한다. 📃 요구사항 Grouping 했을 때 크게 5개의 도메인, 서비스가 필요하다. Timeline ServerUser ServerFeed ServerImage ServerNotification Server 내가 생각하는 주요 설계사항은 아래와 같다. 1. 유저의 개념은 팔로워(본인이 팔로우하고 있는 사람)와 팔로잉..
2024.08.18