목록분류 전체보기 (18)
05AM
Spring Boot에서 @Async는 메서드를 비동기로 실행할 수 있도록 지원하는 기능이다. 도입 시에는 스프링의 기술 추상화에 기대어 그저 비동기로 실행되겠거니 생각하며 크게 고민하지 않았지만, 트랜잭션 컨텍스트가 전파되지 않는 것이나, 반환 값에 따라 예외 처리가 어렵다는 사실을 알게 되어 해당 내용에 대해 정리해보았다.@Async는 편리하게도 간단한 어노테이션 하나로 비동기 처리가 가능하지만, 내부 동작을 정확히 이해하지 않으면 동작하지 않거나 예기치 않은 문제가 발생할 수 있다.이 글에서는 @Async가 무엇인지, 어떤 방식으로 동작하는지, 그리고 도입 시 주의해야 할 점을 정리해보려 한다.@Async란 무엇인가 @Async는 메서드 호출을 별도의 스레드에서 실행하도록 만드는 스프링의 비동기 처..
쿼리 실행 계획은 사용자가 SQL을 실행하여 데이터를 추출하려고 할 때 DBMS의 옵티마이저가 수립하는 작업 절차이다. 즉, 실행계획을 통해 쿼리가 어떻게, 어떤 순서로 실행되는지 구체적으로 볼 수 있다. MySQL에서는 `EXPLAIN`이나 `EXPLAIN ANALYZE` 명령어로 쿼리의 실행 계획을 분석할 수 있는데, 이번 포스팅에서는 실행 계획에 포함되는 정보가 무엇이 있는지, 해당 정보를 어떻게 해석하면 좋을지를 알아보자. 🔷 실행 계획 예시SELECT ml.*FROM mission_log ml JOIN user ON ml.user_id = user.idWHERE ml.created_at = :today;위는 오늘 수행한 미션 기록을 유저의 id로 조인하여 조회하는 쿼리문이다. 지금부터는 각 컬..
🔷 `collect()`Java Stream API의 메서드로, 스트림의 요소를 다양한 컬렉션으로 수집하거나 특정한 방식으로 집계하는데 사용된다.`collect` 메서드는 주로 Collector를 인수로 받아 스트림의 요소를 수집한다.// List로 수집List wordList = words.stream().collect(Collectors.toList());// Set으로 수집Set wordSet = words.stream().collect(Collectors.toSet());Stream (Java SE 11 & JDK 11 ) (oracle.com)🔷 `Collectors`다양한 유틸리티 메서드를 제공하는 클래스로, 주로 스트림의 요소를 컬렉션으로 수집하거나 특정한 집계 연산을 수행할 때 사용된다..
DDD(도메인 주도 설계)와 스프링 프레임워크를 사용하는 프로젝트 구조에서 "model", "domain", "entity"는 각각 다른 의미를 가지고 있으며, 특정한 종류의 클래스들을 포함합니다. 이 용어들은 종종 서로 교차하여 사용되기도 하지만, 각각의 역할과 책임이 있습니다.Domain정의: 도메인은 소프트웨어로 해결하고자 하는 문제 영역입니다. DDD에서는 이 문제 영역을 중심으로 모델링을 진행합니다. 도메인 내에서 비즈니스 로직과 애플리케이션의 핵심 기능이 정의되고 구현됩니다.패키지 구성: domain 패키지는 다음과 같은 클래스들을 포함할 수 있습니다.Entity: 도메인 내의 핵심 개념을 나타내는 객체로, 식별자(ID)에 의해 구별됩니다. 엔티티는 비즈니스 로직을 포함하며, 도메인의 상태를 ..
☀️ TCP 통신의 문제점 Packet Loss (손실) : 데이터 패킷이 송신자에서 수신자로 전송되는 도중에 네트워크 상에서 손실되는 현상 원인: 네트워크 혼잡, 잘못된 라우팅, 패킷 충돌, 하드웨어 결함 등 다양한 이유로 발생할 수 있습니다. 영향: 데이터의 전송 속도 감소, 연결의 비안정성, 데이터의 무결성 문제 등이 발생할 수 있습니다. 해결 방법: 재전송 요청(ARQ)와 같은 메커니즘을 사용하여 손실된 패킷을 다시 보내거나, 전송 제어 프로토콜(TCP)와 같은 프로토콜이 패킷 손실을 감지하고 재전송을 수행합니다. Out-of-Order Packets (순서 바뀜) : 데이터 패킷들이 송신자에서 보낸 순서와 다른 순서로 수신자에게 도착하는 현상 원인: 패킷들이 서로 다른 경로로 전송되거나, 네트워..
☀ 암호화 정보 보안의 핵심 요소 중 하나로, 데이터를 변형하여 원본을 알 수 없게 하는 과정을 의미 이를 가능하게 하는 것이 암호화 알고리즘과 키이다. 대칭키와 공개키는 암호화의 두 주요 방법으로, 각기 다른 특성과 용도를 가지고 있다. ☀ 대칭키 암호화 (Symmetric Key) 암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘 특징 단일 키 사용 암호화와 복호화에 동일한 키를 사용한다. 비밀키 하나만 알아내면 해독이 가능하다. 속도 대칭키 암호화는 공개키 암호화에 비해 연산이 단순하여 속도가 빠르다. 키 관리 대칭키 전달과정에서 보안 위험에 노출될 수 있다. 장점 속도가 빨라 대용량 Data 암호화에 적합하다. 단점 키를 교환해야 하는 문제가 있다. 키 관리 어렵다. 확장성 떨어진다. 기..