Java
-
코틀린, 스프링 기반 마이크로서비스 개발을 위해 읽은 책들Java 2022. 3. 11. 09:45
약 3개월 전, 새로운 팀에 합류하게 되었습니다. Kotlin, Spring Webflux, MySQL, Redis, Kafka, GRPC로 이어지는 새로운 기술 스택에 적응하기 위해 많은 자료들을 찾아보게 되었는데요. 이번 글에서는, 적응하기 위해 읽었던 책들 중 추천할만한 책들을 공유해보려고 합니다. 추천하는 책들 읽어볼만한 책들 추천하는 책들 추천하는 책들은 다뤄주고 있는 내용에 익숙하지 않다면, 50% 이상 정독을 권하는 책들입니다. Effective Kotlin by Marcin Moskala Kotlin의 기초 문법 보다는 실제로 Kotlin을 자주 사용할 때의 best practices들이 담겨 있습니다. Python, Java의 Effective 시리즈와는 다른 출판사에서 출시되었으나, e..
-
Kotlin Coroutines for BackendJava 2022. 2. 21. 22:09
최근 코틀린으로 Spring Webflux 기반의 서비스를 만들며 suspend, withContext 등등 다양한 코틀린 코루틴들을 살펴보게 되었습니다. 코틀린의 기본적인 문법은 익숙해졌지만, 코드를 살펴봐도 명확히 이해되지 않는 부분들이 바로 코루틴과 관련된 부분들이었는데요. 이번 글에서는 [1]을 기반으로, 코틀린의 코루틴이 무엇인지 알아보도록 하겠습니다: 왜 코루틴을 사용할까? Sequence builder Suspension은 어떻게 동작하는가? Coroutine의 내부구조 왜 코루틴을 사용할까? JVM 상에서는 이미 잘 갖춰젼 RxJava 또는 Reactor와 같은 라이브러리가 있습니다. 더욱이, 자바는 멀티쓰레딩을 지원하고 일부는 오래된 callback 형태를 선호하기도 합니다. 비동기 연산..
-
Kotlin Inline modifier의 장점Java 2022. 1. 2. 21:00
inline modifier가 무엇인지 먼저 알아보고, 어떤 장점이 있는지 기술합니다. [1]의 내용을 중심으로 정리하였습니다. Inline Modifier란? 코틀린의 stdlib을 살펴보면, 거의 모든 higher-order functions이 inline modifier를 달고 있는 것을 볼 수 있습니다. 예로, stdlib의 repeat function은 아래와 같습니다: inline fun repeat(times: Int, action: (Int) -> Unit) { for (index in 0 until times) { action(index) } } inline이 컴파일될 때에 하는 일은, 해당 함수를 사용하는 모든 곳을 함수의 body로 변경하도록 합니다. 또한, repeat 내부에서 함수..
-
JDBC란? (feat. 데이터베이스 커넥션 풀링)Java 2021. 10. 24. 12:12
JDBC(Java Database Connectivity)는 RDBMS에 접근하기 위한 프로그래밍 인터페이스입니다. JDBC의 실행은 대부분 SQL을 데이터베이스 서버에 전송하고 수행하는 것들인데요. 이번 글에서는 JDBC를 중심으로 아래와 관련된 사항들을 알아보겠습니다: JDBC 기초 JDBC 버젼 발전과정 JDBC 드라이버 타입 JDBC 기초 JDBC는 SQL 문장을 처리하는 엔진에 대한 Call-Level Interface(CLI)에 기반해 있습니다. 좀 더 구체적으로는, JDBC는 SQL92 언어 문법 스탠다드를 따르는 X/Open SQL CLI(X/Open은 국제 규격 조직)를 사용하는데요. 아래 이미지는 어떻게 SQL CLI와 JDBC가 내부적으로 동작하는지 보여줍니다: 위 이미지에서 JDBC..
-
Spring Framework란?Java 2021. 9. 10. 22:27
스프링은 2002년 릴리즈되어 JEE(Java Enterprise Edition) 서버를 대체하며 다양한 프로젝트가 추가되며 마이크로서비스, 애플리케이션 등을 만들기 위한 광범위한 기술로 자라났습니다 [1]. 이 글에서는 스프링에 대해 아래와 같은 점들을 알아보겠습니다: 스프링이란? IoC(Inversion of Control)와 DI(Dependency Injection) DI 외의 다양한 기능들 스프링 프레임워크의 진화 과정 스프링이란? 스프링은 보통 자바 애플리케이션 개발을 위한 경량 프레임워크라고 할수 있는데요. 이 부분에서 2가지 명확히해야할 부분은 아래와 같습니다. 첫 번째는 다른 프레임워크(Apache Struts 등)는 웹 애플리케이션에 제한되는 반면, 스프링은 어떠한 자바 애플리케이션 개..
-
서블릿의 세션 관리 (Servlet Session Management)Java 2021. 2. 21. 16:35
세션은 특정 시간의 구간을 의미하며, 세션 관리는 사용자의 상태를 유지하는 방법을 말합니다. 이러한 세션관리가 필요한 이유는 사용자에게 상태를 부여해야할 경우가 존재하기 때문입니다. 예로, 사용자 상태를 관리하여 매 페이지를 이동할 때마다 로그인을 요구하지 않고 세션을 통해 이미 로그인 한 사용자임을 입증할 수 있습니다. 그러나, HTTP 프로토콜은 그 자체로 stateless하기 때문에, HTTP 프로토콜 '바깥'에서 이러한 상태 관리를 담당하여야 합니다. 서블릿의 명세 상에서 이러한 세션 관리는 톰캣과 같은 서블릿 컨테이너가 담당합니다. '톰캣 내부구조'에서 살펴본 바와 같이, 세션은 주로 아래의 2가지 방법으로 관리됩니다: 브라우저 상의 쿠키를 통해서 URL Rewriting을 통해서 이번 글에서는..
-
아파치 톰캣 내부구조 (Apache Tomcat Internals)Java 2021. 2. 17. 18:53
컨텍스트를 이해하며 알아보는 Nginx 내부구조 아파치 톰캣 내부구조 (Apache Tomcat Internals) 아파치 톰캣은 Java Servlet, JavaServer Pages, Java Expression Language와 WebSocket 기술의 오픈소스 구현체로, Java 코드가 실행될 수 있는 "pure Java" HTTP Web server 환경을 kadensungbincho.tistory.com 아파치 톰캣은 Java Servlet, JavaServer Pages, Java Expression Language와 WebSocket 기술의 오픈소스 구현체로, Java 코드가 실행될 수 있는 "pure Java" HTTP Web server 환경을 제공합니다 [1]. 웹 서버 역할을 하는 ..
-
서블릿(Servlet)의 구조와 접근방식 (feat. CGI)Java 2021. 2. 16. 08:18
서블릿은 자바 소프트웨어 컴포넌트로 클라이언트의 요청을 처리하기 위해서 서버 안에서 실행됩니다 [1, 2]. 서블릿은 특정 클라이언트 프로토콜에 한정되지 않으나, 주로 HTTP를 많이 사용하기에 Servlet은 보통 HTTP Servlet을 의미하곤 합니다. 서블릿은 Sun Microsystems에 의해 CGI의 한계점을 극복하기 위해 개발되었습니다. 서블릿은 javax.servlet 또는 javax.servlet.http 패키지에 존재하는 자바 인터페이스를 implement하여 만들어 집니다. HTTP 서블릿은 주로 아래와 같은 목적을 위해 사용됩니다: HTML 폼 형태로 제출된 데이터의 처리 및 저장 동적 컨텐츠 제공 (예로, 클라이언트에 쿼리 요청에 해당되는 데이터를 데이터베이스에서 읽어서 전달) ..