Java 17

gRPC 연동 정리 (Java vs Kotlin vs NestJS)

📌 gRPC란?Google이 개발한 고성능, 언어 중립 RPC 프레임워크데이터 직렬화는 Protocol Buffers(proto) 사용HTTP/2 기반으로 양방향 스트리밍, 성능 우수REST보다 빠르며 마이크로서비스 통신에 적합🔗 기술별 구성 방식 요약항목Java (Spring Boot)Kotlin (Ktor)NestJS (TypeScript)주요 라이브러리grpc-spring-boot-starter, protobufgrpc-kotlin, kotlinx-coroutines@grpc/grpc-js, @nestjs/microservices서버 정의@GRpcService로 구현코루틴 기반 suspend 함수 사용@GrpcMethod 데코레이터 사용클라이언트 정의ChannelBuilder + Stub 사용비..

Java 2025.04.02

Java, Kotlin, NestJS의 CI/CD 구성과 마이크로서비스 아키텍처 구성 차이

🚀 CI/CD 구성 비교항목Java (Spring Boot)Kotlin (Ktor)NestJS (TypeScript)빌드 도구Gradle, MavenGradle (주로 사용)npm / yarn테스트 실행JUnit, MockitoKotest, JUnitJest패키징 방식.jar, .war.jar.js 또는 .ts로 빌드, dist/ 생성Docker 사용Dockerfile로 JAR 실행 (Java 기반 이미지)경량 이미지 가능 (코루틴 기반 앱)Node.js 기반 Dockerfile (alpine 사용 가능)주요 툴Jenkins, GitHub Actions, GitLab CIGitHub Actions, CircleCIGitHub Actions, GitLab CI, Vercel 등배포 방식K8s, EC2, ..

Java 2025.04.02

Java, Kotlin, NestJS에서 Kafka/DB /JWT/환경설정

Java(Spring Boot), Kotlin(Ktor), NestJS의 비교 내용 중:Kafka 연동 방식DB 연결 방식JWT 인증 구조환경 설정 방식동일 기능 API 예제각 항목별로 보기 쉽고, 핵심만 빠르게 파악할 수 있도록 구성🔄 Kafka 연동 방식Java (Spring Boot)spring-kafka 사용application.yml에 설정@KafkaListener로 간단한 Consumer 구현 가능spring: kafka: bootstrap-servers: localhost:9092 consumer: group-id: my-groupKotlin (Ktor)kafka-clients 직접 사용코루틴과 함께 비동기 처리설정은 코드에서 수동으로 지정val consumer = K..

Java 2025.04.02

Java, Kotlin, NestJS 비동기 처리 방식, 성능 특징, 그리고 API 구조 설계 방식 차이

Java (Spring Boot), Kotlin (Ktor), NestJS의 REST API 샘플, 비동기 처리 방식, 성능 특징, 그리고 API 구조 설계 방식 차이 ✅ Java (Spring Boot)@RestController@RequestMapping("/api")public class HelloController { @GetMapping("/hello") public ResponseEntity hello() { return ResponseEntity.ok("Hello from Spring!"); }} ✅ Kotlin (Ktor)fun Application.module() { routing { get("/hello") { call...

Java 2025.04.02

로깅 프레임워크 선택

로깅은 단순히 디버깅을 위한 도구가 아닙니다. 잘 설계된 로깅 시스템은 시스템 상태를 실시간으로 모니터링하고, 성능을 추적하며, 잠재적인 문제를 조기에 발견하는 데 중요한 역할을 합니다. Java 애플리케이션에서 로깅을 효율적으로 처리하기 위해선 적합한 로깅 프레임워크를 선택하고, 로그 데이터를 효과적으로 관리할 수 있는 시스템을 구축하는 것이 중요합니다. 로깅 프레임워크 선택1. SLF4J (Simple Logging Facade for Java)SLF4J는 Java 애플리케이션에서 로그를 추상화할 수 있는 API로, 다양한 로깅 프레임워크(Logback, Log4j 등)를 추상화하여 제공합니다. SLF4J 자체는 로그를 처리하지 않지만, 특정 로깅 구현체를 선택하여 로그 처리 작업을 위임할 수 있습니..

Java/Basic 2025.03.25

WebFlux SSE(Server-Sent Events) 사용 이유, 장단점 및 예시

최근 실시간 웹 애플리케이션의 중요성이 증가하면서, Spring의 WebFlux와 **Server-Sent Events(SSE)**가 많은 주목을 받고 있습니다. 이번 글에서는 WebFlux와 SSE의 특징과 사용 이유를 명확히 이해하고 장단점 및 실전 예제를 통해 알아보겠습니다.📌 WebFlux와 SSE란?WebFluxSpring의 리액티브 웹 프레임워크로, 비동기(Asynchronous), 논블로킹(Non-blocking) 방식의 요청 처리를 지원하여 동시성과 확장성을 극대화한 웹 애플리케이션을 개발할 수 있게 합니다.Server-Sent Events(SSE)클라이언트와 서버 간 단방향으로 실시간 이벤트 데이터를 전달할 수 있는 웹 표준 기술입니다. 주로 서버가 클라이언트로 계속해서 데이터를 실시간..

Java/Basic 2025.03.24

Spring vs. NestJS 상세 비교

🌿 Spring vs. NestJS 상세 비교비교 항목🌱 Spring🐱 NestJS언어 및 플랫폼Java, JVM 기반 프레임워크TypeScript(JavaScript 가능), Node.js 기반 프레임워크아키텍처 스타일MVC, 계층형 구조 중심(Layered, Service-Repository 등)모듈식 구조, 의존성 주입(DI), MVC/DDD 가능러닝 커브다소 높음 (Java, 스프링 생태계 이해 필요)상대적으로 낮음 (JavaScript 생태계, Angular 유사)생산성생산성 매우 높음 (Spring Boot로 초기 설정 단순화, 자동설정 및 스타터 제공)생산성 높음 (CLI로 빠른 프로젝트 생성 및 보일러플레이트 코드 자동 생성)성능JVM 기반으로 뛰어난 성능 및 안정성Node.js 비동..

Java/Basic 2025.03.24

Filter(필터)란?

필터(Filter)는 웹 애플리케이션에서 클라이언트의 요청(request)과 서버의 응답(response)이 서블릿이나 컨트롤러에 도달하기 전과 후에 미리 처리하는 기능을 의미합니다.즉, Servlet 요청과 응답을 가로채어 원하는 작업(인증, 권한 체크, 로깅, 인코딩 등)을 수행할 수 있는 유용한 기능입니다.필터의 가장 큰 특징은 서블릿이나 컨트롤러를 수정하지 않고도 전체 요청 흐름을 관리할 수 있다는 것입니다.⚙️ Filter의 동작 과정일반적인 필터의 처리 과정은 아래와 같습니다.클라이언트 요청 ▶️ 필터 ▶️ 서블릿(컨트롤러) ▶️ 필터 ▶️ 클라이언트 응답즉, 요청 시와 응답 시 양방향에서 작동할 수 있습니다.✅ Filter의 주요 용도요청과 응답의 인코딩 설정인증 및 권한 검사로깅 및 요청/..

Java/Basic 2025.03.24

HttpServletResponse와 getOutputStream() 정리

Java 웹 애플리케이션 개발 시 클라이언트에 데이터를 전달하기 위해 자주 사용하는 객체가 바로 HttpServletResponse입니다. 그중에서도 특히 파일 다운로드 또는 바이너리 데이터 전송 시 자주 사용하는 메소드가 getOutputStream()입니다.이 두 개념을 명확히 이해하고 활용하는 방법을 살펴보겠습니다.📌 1. HttpServletResponse란?HttpServletResponse는 서블릿(Servlet)이 HTTP 요청을 처리한 뒤 클라이언트로 응답(response)을 보내기 위한 객체입니다. 주로 아래와 같은 작업을 수행합니다.응답 헤더(Header) 설정: 컨텐츠 타입, 캐싱, 리다이렉션 등상태 코드(Status Code) 설정: (200, 404, 500 등)응답 본문(Res..

Java/Basic 2025.03.24

Java 11 vs 17 vs 21: 주요 변화와 코드로 살펴보기

🚀 Java 11 vs 17 vs 21: 주요 변화와 코드로 살펴보기자바(Java)는 지속적으로 새로운 기능과 성능 개선을 선보이며 발전하고 있습니다. 이번 글에서는 Java 11, Java 17, 그리고 최신 버전 Java 21의 핵심 기능을 간단한 코드 예제와 함께 비교해보겠습니다.📌 Java 11 (LTS)Java 11은 현재 가장 널리 쓰이는 LTS(Long-Term Support) 버전입니다.🔑 주요 특징var 키워드 활용 확장HttpClient API 정식 도입Lambda 표현식의 간결화📗 코드 예시: HttpClient 사용하기import java.net.http.*;import java.net.URI;public class Java11HttpClientExample { publ..

Java/Basic 2025.03.24