본문 바로가기

전체 글87

Kubernetes - Service ServiceKubenetes 환경에서 Serivce는 Pod를 통해 실행되는 네트워크 애플리케이션을 네트워크에 노출시키는 가상의 컴포넌트다. Pod는 임시적인(ephemeral) 리소스임으로 Pod의 IP를 통해 접속하는 방법은 쉽지 않기 때문에 Service를 사용하여 Pod를 외부와 연동하도록 가이드한다.Defining a ServiceService는 Pod, ConfgMap과 같은 K8S Object로 Kubernetes API를 사용하여 정의할 수 있다. 예를 들어 HTTP 9376, HTTPS 9377 port로 서비스하는 app.kubernetes.io/name: MyApp 라벨이 설정된 Pod가 있는 경우 아래와 같이 서비스를 정의할 수 있다.apiVersion: v1kind: Servic.. 2024. 7. 2.
Spring Boot Application Caching 간단한 예제로 Spring Boot Application에서 캐쉬를 구현할 때 어떻게 사용해야하는지 살펴본다. Implementbuild.gradleplugins { id 'java' id 'org.springframework.boot' version '3.3.1' id 'io.spring.dependency-management' version '1.1.5'}group = 'org.igooo'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(21) }}repositories { mavenCentral()}dependencies { implementation 'org.springframework.boo.. 2024. 6. 24.
Spring - Modulith - Working with Applicaton Events 개요Spring Modulith는 Spring Boot 애플리케이션에서 논리 모듈을 구련하는 개발자를 지원한다. 모듈을 문서화하고, 모듈에 대한 통합 테스트를 실행하고, 모듈 간 상호 작용을 관찰하고, 모듈 간의 느슨한 결합으로(loosely coupled) 상호 작용을 구현할 수 있도록 한다. 이전글 참고 (https://blog.igooo.org/118) Working with Application EventsSpring Modulith로 구현된 모듈 사이에는 모듈에서 공개된 기능만(public method) 호출하여 사용할 수도 있지만 각 모듈은 서로 가능한 분리된 상태로 모듈 간 연동은 이벤트 게시 및 소비로 연동하여야 한다. 모노리스로 구현된 애플리케이션에서는 아래와 같은 코드를 볼 수 있다. .. 2024. 6. 21.
[Spring Framework 6.2] Support for fallback beans 개요Spring Framework 6.2에 추라될 기능 중 @Fallback에 대하여 알아본다. AS-ISSpring 컨테이너에 동일한 유형의 Bean이 여러개가 있고, autowited에 사용할 Bean을 경정하는 경우 @Primary 어노테이션 추가가 필요하다.interface UserRepository { String findNameById(String id);}class MysqlUserRepository implements UserRepository { @Override public String findNameById(String id) { return "mysql " + id; }}class MongoUserRepository implements UserRepository { @Overrid.. 2024. 6. 15.
[Spring Framework 6.2] Bean Background Initialization 개요Spring Framework 6.2에 추가될 기능 중 Bean Background Initialization에 대해 알아본다. Quick StartSpring Framework 6.2 Dependency 설정아직 Spring Framework 6.2가 정식 릴리즈 되지 않아서 Snapshot 버전으로 설정한다.plugins { id 'java' id 'org.springframework.boot' version '3.3.1-SNAPSHOT' id 'io.spring.dependency-management' version '1.1.5'}java { toolchain { languageVersion = JavaLanguageVersion.of(21) }}repositories { mavenCentra.. 2024. 6. 13.
Hello, Java 22! 개요Java 22가 정식으로 출시되었고, Spring을 통해 관련 기능을 검토한다. A Quick Programming Note이 게시글 전반적으로 functional interface type인 LanguageDemonstrationRunner를 사용한다. Throwable를 던지도록 선언된 functional interface로 걱정할 필요가 없다.package com.example.demo;@FunctionalInterfaceinterface LanguageDemonstrationRunner { void run() throws Throwable;} ApplicationRunner에 LanguageDemonstrationRunner의 구현체를 주입후 run 메소드를 통해 호출한다. // ..... 2024. 6. 9.
[Spring] Spring Framework CDS(Class Data Sharing) (Project Leyden) https://spring.io/blog/2023/10/16/runtime-efficiency-with-spring에 대한 후속 조치로 Project Leyden 최적화를 위해 많이 사용되지 않는 JDK의 CDS(lass Data Sharing) 기능에 대한 지원이 Spring Framework 6.1에 제공되어 CDS에 대하여 알아본다. GraalVM, Proejct CRaC를 사용하면 Spring Boot 애플리케이션을 수십 밀리초에 시작할 수 있다. 하지만 왜 CDs에 관심을 가져야 하는지 알아보자.GraalVM 및 Proejct CRaC보다 제약 조건과 부작용이 적고, OpenJDK에서 즉시 사용 가능한 기술이다.대부분의 사람들은 CDS를 사용하지 않지만 상대적으로 적은 작업으로 합리적인 시작 시.. 2024. 6. 6.
Dapr Quick Start Introduction to the Distributed Application RuntimeDapr는 클라우드나 엣지에서 실행 가능하여, 간단하게 마이크로서비스 애플리케이션을 구축할 수 있게 해 준다.분산 애플리케이션에 내재된 큰 어려움 중 하나인 복잡성을 해결해 준다. 다양한 언어를 지원한다. Microservice building blocks for cloud and edgeBuilding Block을 제공하여 마이크로서비스 애플리케이션을 구축할 때 공통 기능에 대한 표준적인 방법을 제공한다. Building BlockEndpointDescriptionService-to-service invocation/v1.0/invokeResilient service-to-service invocation ena.. 2024. 6. 5.
Quick Start WebAssambly (wasm) WebAssambly (wasm)웹 브라우저에서 실되는 프로그래밍 언어이자 바이트코드. • 안전하다 • 빠르다 WebAssembly System Interface (WASI)WebAssembly용 모듈식 시스템 인터페이스Cross platform applications and gamesCode re-use between platforms and use casesRunning applications written in any Wasm/Wasi-compilable language on single runtime"Containerizing" application and their dependencies as single tagetAnd Many More!브라우저 외부에서 WebAssembly를 실행할 수 있다.. 2024. 6. 5.