안녕하세요.
사람에 가치를 두는|
개발자 최민석입니다.

thumbnail
Backend
K8S
MSA
February 01, 2025
Kubernetes에 Kong Api Gateway 배포하기

Kuberenetes 클러스터에 Kong api gateway 배포하기 Helm으로 Kong 설치하기 helm 업데이트 실행 jwt에 사용할 secret key 생성 kong 설치에 앞서서 jwt 시크릿키로 관리할 secret 등록을 해준다. helm으로 kong 설치 kong 인증 플러그인 설치하기 kong ingress 설정하기 DNS A 레코드로 서브도메인 등록하기 프론트엔드에서 접근 가능하도록 api host로 서브도메인을 등록해준다. 성공! Helm으로 Kong 설치하기 helm 업데이트 실행 jwt에 사용할 secret key 생성 helm으로 kong 설치 kong 인증 플러그인 설치하기 kong ingress 설정하기 DNS A 레코드로 서브도메인 등록하기

Spring
September 11, 2024
Reactor에서 `publishOn`과 `subscribeOn`의 역할

Reactor에서 과 의 역할 Spring WebFlux를 공부하기 위해서는 먼저 Reactor에 대해 이해하는 것이 중요하다. 특히, Reactor에서 제공하는 ****과 ****은 리액티브 스트림에서 중요한 개념이다. 이 두 가지 연산자는 비동기적으로 데이터 스트림을 처리하는 과정에서 스레드를 제어하는 역할을 한다. 이번 포스팅에서는 과 이 무엇인지, 그리고 어떻게 다르게 동작하는지에 대해 알아보자. 이란? ****은 말 그대로 구독 시점과 데이터 생성을 어느 스레드에서 실행할지를 결정하는 연산자다. 즉, 이 연산자가 적용되면 구독이 시작되는 순간부터 데이터가 생성되는 시점까지 특정 스레드에서 작업이 실행된다. 적용 시점: 체인의 어디에 위치하든 상관없이, 구독 시점부터 영향을 미친다. 영향 범위: 구독과 데이터 생성 전체에 영향을 미친다. 예시 위 예시에서는 이 설정되었기 때문에, 로 생성된 데이터는 스레드에서 처리된다. 즉, 데이터가 만들어지는 시점과 구독 시점이 elas…

Java
JVM
September 09, 2024
JVM 메모리 구조 이해

JVM 메모리 구조 이해 JVM의 메모리 구조 JVM 메모리는 크게 메서드 영역, 힙(Heap) 영역, 가상 머신 스택(VM Stack), **네이티브 메서드 스택(Native Method Stack)**으로 나뉜다. 1. 메서드(Method) 영역 저장되는 데이터: 클래스 메타데이터(클래스, 인터페이스 정보) 정적 변수 메서드의 바이트코드 런타임 상수 풀(리터럴, 상수) 2. 힙(Heap) 영역 저장되는 데이터: 동적으로 생성된 객체와 배열 참조 타입의 객체 데이터 3. 가상 머신 스택(VM Stack) 저장되는 데이터: 로컬 변수 메서드 호출 정보 연산 스택에서 계산된 중간 값 4. 네이티브 메서드 스택(Native Method Stack) 저장되는 데이터: 네이티브 메서드 호출 정보 네이티브 라이브러리 코드 코드 예시 설명 메서드 영역 : 정적 변수로 메서드 영역에 저장된다. 클래스가 로드될 때 한 번만 생성되며 모든 인스턴스에서 공유된다. 힙 영역 객체: 를 통해 힙에 저…

Backend
Spring
September 07, 2024
컴파일러, JIT, AOT, Graal, 그리고 Spring Native 이해하기

컴파일러, JIT, AOT, Graal, 그리고 Spring Native 이해하기 💡 이 포스트에서는 컴파일러, Just-In-Time(JIT), Ahead-Of-Time(AOT) 컴파일, GraalVM, 그리고 이들이 Spring Native와 어떻게 연관되는지에 대해 살펴본다. 이러한 개념들은 자바 및 다른 언어들이 다양한 런타임 환경에서 어떻게 작동하는지 이해하는 데 중요한 역할을 하며, Spring 애플리케이션이 이 기술들을 통해 성능을 최적화할 수 있는 방법을 제공한다. 1. 컴파일러란 무엇인가? 컴파일러는 프로그래밍 언어로 작성된 소스 코드를 기계어로 변환하는 도구이다. 두 가지 주요 컴파일 방식이 있다: 정적 컴파일 (예: javac): 프로그램이 실행되기 전에 소스 코드를 기계어 또는 중간 형태로 변환한다. 자바에서는 파일을 파일(바이트코드)로 변환하는 과정이다. 동적 컴파일 (예: JIT): 프로그램이 실행되는 동안 코드의 일부를 기계어로 변환한다. 2. Jus…