전체 글 316

Spring Cloud Config Server의 암호화

Config Server의 암호화설정 정보를 평문으로 관리하는 것은 보안 문제를 일으킬 우려가 있다. Spring Cloud Config Server는 암호화된 프로퍼티 값을 제공하기 위해 대칭 키 또는 비대칭 키를 사용할 수 있다. 대칭키를 이용한 암호화 동일한 키를 암호화와 복호화에 사용하는 방식으로 처리 속도가 빠르다는 장점이 있지만 키 교환의 어려움과 키 관리의 문제가 있다. 라이브러리 implementation("org.springframework.cloud:spring-cloud-starter-bootstrap") bootstrap.ymlencrypt: key: abcdefghijklmnopqrstuexyz1234567890 bootstrap.yml 이란? 부트스트랩 단계에서 사용되는 설정 파..

JVM/SpringCloud 2023.12.30

Spring Cloud Bus

Spring Cloud Bus Spring Cloud Bus는 분산 시스템에서 구성 변경 및 이벤트 전파를 지원하는 도구이다. 이를 통해 여러 서비스 인스턴스 간에 구성 변경을 효율적으로 전파하고, 런타임 중에 애플리케이션 상태를 모니터링하고 관리할 수 있다. 이벤트 버스: Spring Cloud Bus는 이벤트 버스를 사용하여 분산된 서비스 간에 이벤트를 전파한다. 이를 통해 구성 변경, 애플리케이션 이벤트 등을 브로드캐스트할 수 있습니다. 구성 변경 전파: Spring Cloud Config와 통합하여 구성 서버에서 가져온 구성 정보를 변경할 때 이를 모든 서비스 인스턴스에 효과적으로 전파할 수 있다. 애플리케이션 상태 모니터링: 애플리케이션의 상태 변경, 이벤트, 구성 변경 등을 모니터링하고 이를 ..

JVM/SpringCloud 2023.12.28

Spring Cloud Config

Spring Cloud Config Spring Cloud Config는 Spring 프레임워크 기반의 분산 시스템에서 설정 관리를 간편하게 하기 위한 도구이다. 여러 마이크로서비스가 함께 동작하는 환경에서 중앙화된 설정을 적용하고, 이를 외부에서 동적으로 수정할 수 있도록 지원한다. 중앙화된 저장소: 설정 정보는 외부 저장소에 저장되어 중앙화되며, 보통 Git과 같은 버전 관리 시스템을 사용한다. 이를 통해 변경 이력을 추적하고, 여러 환경에 대한 설정을 효과적으로 관리할 수 있다. 외부에서의 설정 관리: 서비스를 중지시키지 않고도 설정을 변경할 수 있다. 이는 서비스의 재시작 없이도 동적으로 설정을 갱신할 수 있어, 높은 가용성을 유지하면서도 설정을 최신 상태로 유지할 수 있음을 의미한다. 애플리케이..

JVM/SpringCloud 2023.12.27

[SpringCloud] Swagger(Springdoc) 통합 설정

Spring Boot에서는 여러 개의 모듈이나 서비스를 포함하는 분산 시스템에서 API 문서를 통합하고자 할 때, 주로 Swagger 문서를 Aggregator 또는 Gateway에서 통합하는 방식이 사용된다. 이를 위해서는 각 서비스의 Swagger 문서를 중앙 집중화된 위치에서 통합하거나, 서비스 간에 문서를 병합하는 방법을 사용할 수 있다. 두 방식 중 어느 것을 선택할지는 시스템의 구성과 요구사항에 따라 다를 수 있다. 중앙 집중화된 위치에서 통합하는 경우 Gateway에 부하가 집중될 수 있지만, 서비스 간 문서 병합은 각 서비스가 직접적으로 책임을 지게 된다. 중앙에서 통합하는 방식Spring Gateway나 중앙에서 각각의 서비스의 api-docs의 path를 호출하는 방식이다. spring..

JVM/SpringCloud 2023.12.27

요청 처리와 스레드풀

스레드풀을 사용하는 이유프로세스는 실행 중인 프로그램을 나타내며, 스레드는 프로세스의 작업 단위이다. 자바에서의 스레드는 주로 OS의 스레드에 일대일로 매핑된다. 이는 각 자바 스레드가 하나의 OS 스레드에 대응된다는 것을 의미한다. 그러나 이런 매핑 방식은 스레드 생성 비용과 Context Switching 빈도로 인해 효율적이지 않다. 이러한 문제에 대응하기 위해 사용되는 것이 스레드 풀이다. 스레드 풀은 미리 정의된 수의 스레드를 생성하고 관리하여 작업을 효율적으로 할당한다. Http 요청은 어떻게 스레드에 할당되는가? 서버가 실행되면 NioConnector(비동기 네트워크 통신을 관리하는 주체)가 생성되고 그다음에는 NioProtocol(실제 통신 프로토콜 및 데이터 처리를 담당)이 생성되고 이후..

JVM/SpringMVC 2023.12.20

JVM

JVM이란?JVM은 (Java Virtual Machine) 자바 가상 머신의 약자로 자바 프로그램 런타임 환경을 제공하는 소프트웨어이다. 자바 애플리케이션을 클래스 로더를 통해 읽어 들여, 자바 API와 함께 실행하는 역할을 한다. Java와 OS 사이에서 중개자 역할을 수행해 Java가 OS에 구애받지 않고 실행되도록 한다. 또한, Garbage Collection을 통해 프로그램 메모리 관리와 최적화를 수행한다.  JVM의 구조 Class Loader클래스 로더는 class 파일을 JVM의 메모리 영역인 Runtime Data Area로 로딩, 검증, static 변수를 초기화하는 등의 역할을 한다. Execution Engine클래스 코드는 기계가 바로 수행할 수 있는 형태로 기술되어 있지 않다...

JVM 2023.12.19

Redis 야무지게 사용하기

RedisRedis는 In-Memory 데이터 스토어다. 서버 재시작 시 모든 데이터를 유실한다. 복제 기능을 사용해도 사람의 실수 발생 시 데이터 복원은 불가능하다. 때문에 캐시 이외의 용도로 사용한다면 적절한 데이터 백업이 필요하다.단순한 key-value 구조평균 작업속도 < 1ms초당 수백만 건의 작업 가능 캐시로 사용하기캐시란?데이터의 원래보다 더 빠르고 효율적으로 액세스 할 수 있는 임시 데이터 저장소이다. 같은 데이터에 반복적 액세스가 일어날 때, 원본보다 빠른 접근 속도가 필요할 때, 변하지 않는 데이터일 때 캐시를 사용하면 효율적이다. 캐싱 전략읽기 전략 Look-Aside(Lazy Loading)레디스를 캐시로 쓸 때 가장 일반적으로 사용하는 방법으로 애플리케이션에서 데이터를 읽는 작업..

Database/Redis 2023.12.15

Spring WebSocket & STOMP

웹소켓 웹소켓은 텍스트와 바이너리 타입의 메시지를 양방향으로 주고받을 수 있는 프로토콜이다. 게임, 채팅, 실시간 주식 거래 사이트 등 실시간성을 보장하는 서비스에서 사용된다. HTTP에서도 실시간성을 보장하는 기법이 존재한다. (Polling, Long Polling, Streaming) 웹소켓을 지원하지 않는 브라우저에서는 SockJS, Socket.io를 사용하여 HTTP의 다른 기법을 대신 사용하여 웹소켓을 사용하는 거처럼 보이게 할 수 있다. HTTP vs 웹소켓 HTTP 웹소켓 비 연결성 매번 연결 맺고 끊는 과정의 비용 (매 요청마다 수많은 헤더들을 만들어서 보내야 한다) 요청 - 응답 구조 연결 지향 한번 연결 맺은 뒤 유지 양방향 통신 첫 연결은 HTTP를 사용한다 설정 @Configur..

JVM/SpringMVC 2023.12.15

코틀린 문법정리

nullSafe Call과 Elvis 연산자nullable 타입을 다룰 때 사용된다.val str: String? = "ABC"var length;length = str.length // 불가능length = str?.length // 가능length = str?.length ?: 0 // null이 아니면 길이 null이면 0early return에도 사용할 수 있다.fun calculate(number: Long?): Long{ number ?: return 0 // 로직}단언 연산자nullable 타입이지만 개발자가 null이 아님을 확신할 때 사용된다.val nullableValue: String? = "Hello, Kotlin"val nonNullValue: String = ..

JVM/Kotlin 2023.12.13

당신의 뇌는 최적화를 원한다 - 엔도르핀

엔도르핀 엔도르핀은 주로 심한 스트레스 상황이나 긴장을 푼 상태에서 분비되어 진통 효과를 내며, 이 효과는 모르핀에 비해 6.5배 강력하다. 엔도르핀은 주로 심리적인 스트레스를 해소하는 데 기여하며, 특히 부상, 질병, 달리기 등으로 인한 고통이나 괴로움을 행복으로 전환하여 몸과 마음을 지켜주는 역할을 한다. 이 과정에서 엔도르핀은 종종 '뇌 내 마약'으로 불리기도 한다. 또한, 엔도르핀의 분비는 행복감과 황홀감을 유발하며, 각성 작용이 있어 기억력, 상상력, 주의력, 집중력을 향상하지만, 과도한 분비는 환각을 유발할 수 있다. 엔도르핀과 알파파 엔도르핀은 '치유되었다', '긴장이 풀렸다'라고 느끼는 순간에도 분비된다. 몸과 마음이 편안하면 뇌에서 알파파가 원활하게 나온다. 알파파가 나오면 엔도르핀이 분..

도서 2023.12.13
728x90