전체 글 2597

[Kotlin] CoroutineScope

CoroutineScopeCoroutine들에 대한 scope를 정의하며 scope에는 여러 Coroutine들 포함자식 Coroutine들에 대한 생명주기를 관리하며 자식 Coroutine들이 모두 완료되어야만 scope도 완료되었다고 처리CoroutineScope의 coroutineContext에는 꼭 Job을 포함해야 함  1. CoroutineScope 함수CoroutineScope 함수를 이용해 CoroutineScope 생성  부연 설명인자로 주어진 context에 Job이 포함되었는지 확인포함되어 있지 않다면 Job을 생성하여 추가하고 ContextScope에 전달여기서 ContextScope는 CoroutineScope의 단순한 구현체  부연 설명EmptyCoroutineContext를 통..

Kotlin 2024.10.03

[Kotlin] CoroutineContext

CoroutineContext코틀린에서 코루틴을 실행할 때 사용하는 컨텍스트를 나타내는 인터페이스Spring MVC와 같이 thread-per-request 모델에서는 ThreadLocal을 사용하지만 Reactor나 코루틴처럼 각 요청을 처리할 때마다 수행하는 쓰레드가 변경되기 때문에 특정 쓰레드에 종속되는 ThreadLocal에 접근 불가이에 따라 Reactor에서는 Context, 코루틴에서는 CoroutineContext를 사용하여 파이프라인 context를 저장CoroutineContext는 코루틴의 동작을 커스터마이징하고, 실행 쓰레드나 예외 처리, 디버깅 정보 등을 포함하는 요소들을 담고 있음 1. Continuationsuspend 함수는 다양한 쓰레드에서 실행되기 때문에 ThreadLoc..

Kotlin 2024.10.03

[Kotlin] 코루틴 (Coroutine) 기초

1. suspend 함수코틀린 코루틴에서 비동기적으로 실행할 수 있는 특수한 함수로코루틴 내에서 중단 가능(suspension) 한 작업을 처리할 수 있도록 설계됨실행 일시 중단 가능나중에 다시 실행 재개할 수 있는 특징 지님 코루틴 내에서 네트워크 요청이나 파일 읽기/쓰기와 같이 특정 작업을 대기해야 할 때 CPU 리소스를 낭비하지 않고, 효율적으로 다른 작업 처리 가능 1.1 suspend 함수 특징코루틴 내에서만 실행 가능: suspend 함수는 오직 코루틴 내에서만 호출될 수 있으며 코루틴 범위 밖에서는 직접 호출 불가중단 및 재개 가능: 앞서 언급했다시피 suspend 함수는 중간에 실행을 멈추고, 나중에 다시 이어서 실행 가능비동기 작업 처리: suspend 함수는 일반 함수와 달리 비동기 작..

Kotlin 2024.10.02

[Kotlin] 코루틴 (Coroutine) 개요

코루틴Kotlin Serialization, Kotlin Lincheck과 함께 코틀린에서 지원하는 공식 라이브러리로 동시성을 지원하는 라이브러리기존의 쓰레드 기반 비동기 프로그래밍의 복잡성과 성능 한계를 극복하기 위해 설계되었으며, 동시성을 처리하는 강력한 도구비동기 non-blocking으로 동작하는 코드를 동기 방식으로 작성할 수 있도록 지원단, 컴파일된 후의 결과는 동지적으로 동작하지 않음 CoroutineContext를 통해 Dispatcher, Error Handling, 그리고 ThreadLocal 등을 지원CoroutineScope를 통해 Structured Concurrency와 Cancellation 제공Flow, Channel 등의 심화 기능 제공 1. kLogger코틀린에서 로깅을 ..

Kotlin 2024.10.02

[Programmers] 퍼즐 게임 챌린지

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/340212 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 이분 탐색을 통해 풀 수 있는 문제였습니다.  개발환경: Programmers IDE   지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Spring WebFlux] 예외 처리

서론Spring MVC 기반의 애플리케이션에서는 @ExceptionHandler 혹은 @ControllerAdvice 등의 애너테이션을 이용하여 예외 처리를 진행했습니다.Spring WebFlux 기반의 애플리케이션에서도 두 애너테이션을 사용 가능하지만 이번 게시글에서는 Spring WebFlux 전용 예외 처리 기법에 대해 간단하게 정리해 보겠습니다. Reactor에서 제공하는 에러 처리 Operator를 이용한 예외 처리자주 사용하는 Operator로 error, onErrorReturn, onErrorResume, onErrorContinue, retry가 있으며 해당 Operator들을 통해 inline 예외 처리 수행사용하기 쉽고 간편하지만클래스 내 여러 개의 Sequence가 존재할 때 각 S..

[Spring Security] 아키텍처 간단 정리

Spring Security 아키텍처  1. AuthenticationFilterSpring MVC 기준으로 요청이 DispatcherServlet에 도달하기 전에 인증 필터가 요청을 가로챔모든 들어오는 요청은 이러한 필터들을 통과하며, 여기서 인증 및 인가가 이루어짐요청의 유형에 따라 BasicAuthenticationFilter, UsernamePasswordAuthenticationFilter 등 다양한 인증 필터 존재 요청이 적절한 AuthenticationFilter에 의해 가로채지면, 필터는 요청에서 username과 password를 추출하여 Authentication 객체 생성추출된 자격 증명이 username과 password일 경우, 위 사진처럼 UsernamePasswordAuthe..

Spring Data R2DBC 간단 정리

R2DBC (Reactive Relational Database Connectivity)관계형 데이터베이스에 리액티브 프로그래밍 API를 제공하기 위한 개방형 사양(Specification)드라이버 벤더가 구현하고 클라이언트가 사용하기 위한 SPI(Service Provider Interface)R2DBC의 등장으로 관계형 데이터베이스를 사용하더라도 클라이언트의 요청부터 데이터베이스 접근까지 완전한 non-blocking 애플리케이션을 구현하는 것이 가능해짐 1. R2DBC를 지원하는 드라이버 목록ClilckHouse R2DBC DriverGoogle Cloud SpannerJasync-sql MySQLOracle R2DBC DriverR2DBC H2R2DBC MariaDBR2DBC MySQLR2DBC ..

AWS Practitioner 간단 후기

사내 AWS 교육 프로그램을 수료하면 AWS Practitioner 자격증 응시료를 무료로 지원받을 수 있는 제도가 있어 응시했으며, 2주간 공부한 끝에 합격할 수 있었습니다.  문제 유형AWS Practitioner 시험은 총 65문제로 구성되어 있으며, 문제는 네 개의 도메인에 다음과 같이 분포되어 있습니다.클라우드 개념 (24%)보안 및 규정 준수 (30%)클라우드 기술 및 서비스 (34%)결제, 요금 및 지원 (14%) 문제 난이도모두 객관식이고 65문제 중 45문제만 맞히면 통과이기 때문에 크게 어렵지는 않습니다.간혹 너무 지엽적인 문제가 나오는 경우가 있는데 20개까지는 틀려도 되므로 너무 부담을 가지지 않아도 됩니다. 공부 방법Udemy에 AWS Practitioner 강의와 덤프 문제집이 ..

[DEV] 기록 2024.09.07

[Spring WebFlux] 함수형 엔드포인트(Functional Endpoint)

서론Spring WebFlux는 지난 게시글에서 소개했다시피 Spring MVC와 같은 애너테이션 기반 프로그래밍 모델과 함께 함수형 엔드포인트를 기반으로 하는 새로운 프로그래밍 모델을 지원합니다.함수형 엔드포인트에서는 들어오는 요청을 라우팅하고, 라우팅 된 요청을 처리하며 결과 값을 응답으로 반환한 등의 모든 작업을 하나의 함수 체인에서 처리합니다.이번 게시글에서는 함수형 엔드포인트 프로그래밍 모델에 대해 간단하게 알아보겠습니다. HandlerFunction을 사용한 요청 처리함수형 엔드포인트는 인입되는 요청을 처리하기 위해 HandlerFunction이라는 함수형 기반의 핸들러를 사용합니다.서블릿 기반의 요청 처리는 Servlet 인터페이스의 service 메서드의 파라미터로 전달받는 ServletR..