webflux - R2DBC
·
카테고리 없음
이 이미지에서는 Spring WebFlux를 사용하는 서버가 클라이언트, API 서버, 그리고 관계형 데이터베이스(RDB)와 어떻게 통신하는지 설명하고 있습니다. 각 통신 과정에서 동기와 비동기 방식이 어떻게 적용되는지를 설명하는 흐름도입니다.1. 클라이언트 → Spring WebFlux (Reactor-Netty)비동기 통신: 클라이언트는 reactor-netty를 사용하여 Spring WebFlux 서버로 요청을 비동기 방식으로 전송합니다.Reactor-Netty: Spring WebFlux는 Reactor와 Netty를 기반으로 동작하며, 클라이언트로부터 들어오는 HTTP 요청을 비동기적으로 처리합니다. 클라이언트가 요청을 보내면, WebFlux 서버는 요청을 처리하는 동안 클라이언트의 연결을 유지..
Spring Webflux 실습 - 2
·
프레임워크/자바 스프링
간단한 spring boot 서버를 만들어 줍니다.`mvc` 서버라고 지칭하겠습니다.package com.example.mvc;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import java.util.Map;@SpringB..
Spring Webflux 실습 - 2
·
프레임워크/자바 스프링
간단한 spring boot 서버를 만들어 줍니다.`mvc` 서버라고 지칭하겠습니다.package com.example.mvc;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import java.util.Map;@SpringB..
Spring Webflux 실습 - 1
·
프레임워크/자바 스프링
Spring WebFlux를 이용한 서버 구성Spring Framework를 이용해 실제 서버를 구성하는 과정에서, 각각의 Controller, Service, Repository가 WebFlux 스타일로 어떻게 구현되는지 알아보겠습니다.ControllerSpring WebFlux에서는 컨트롤러를 구현하는 두 가지 방식이 있습니다:Functional EndpointAnnotation Endpoint프로젝트 설정 (application.yml)먼저, Spring Boot 애플리케이션의 설정을 application.yml에 정의합니다. 다음은 애플리케이션의 이름과 로그 레벨을 설정하는 코드입니다:spring: application: name: webflux1logging: level: root..
Webflux - reactor 실습
·
프로그래밍 언어/스프링부트
Reactor Core를 이용한 Flux와 Mono 실습Reactor는 자바 비동기 프로그래밍을 위한 라이브러리로, 주로 Flux와 Mono라는 두 가지 기본 타입을 사용하여 데이터 스트림을 처리합니다. 이번 글에서는 Flux와 Mono의 차이를 간략히 설명하고, 예제를 통해 그 동작을 살펴보겠습니다.라이브러리 설정Reactor와 Spring Boot를 활용한 프로젝트에서는 reactor-core 라이브러리를 추가하여 Flux와 Mono를 사용할 수 있습니다. 아래는 필요한 라이브러리를 포함한 build.gradle 설정 예시입니다.plugins { id 'java' id 'org.springframework.boot' version '3.3.3' id "io.spring.dependen..
Webflux - reactor
·
프레임워크/자바 스프링
Reactive Streams와 Spring WebFlux: 비동기 스트림 처리의 핵심 이해비동기 논블로킹 I/O는 현대 웹 애플리케이션에서 매우 중요한 기술입니다. 특히, Reactive Streams는 비동기 데이터를 효율적으로 처리하기 위한 표준을 정의하고, 이를 통해 고성능의 서버 애플리케이션을 구축하는 데 필수적인 역할을 합니다. 이번 포스트에서는 Reactive Streams, Reactor, Spring WebFlux의 개념을 이미지 기반으로 설명하고, 이들이 어떻게 비동기 스트림 처리를 구현하는지 살펴보겠습니다.1. Reactive Stream 계층 구조Reactive Streams는 비동기 스트림 처리에서 non-blocking 방식과 back pressure 메커니즘을 통해 데이터를 효..
Webflux - spring mvc vs webflux
·
프레임워크/자바 스프링
spring mvc와 webflux에 대한 비교를 해보겠습니다.reactive stack은 spring boot2 버전부터 지원되고 있습니다.Reactive StackReactive Stack은 비동기적이고 논블로킹 방식으로 작동하는 스택입니다. Spring WebFlux는 이 스택의 중심에 있으며, Reactive Streams API와 Reactor 라이브러리를 기반으로 구축되었습니다. Reactive Stack은 다음과 같은 특징을 가지고 있습니다:논블로킹 I/O: 여러 요청을 병렬적으로 처리할 수 있어, 대규모 트래픽 처리에 적합합니다.멀티코어 프로세서 활용: 다중 코어를 효과적으로 사용하여 고성능을 달성할 수 있습니다.Netty 및 Servlet 3.1+와 같은 비동기 컨테이너에서 실행되며, 동..
webflux - CPU Bound vs IO Bound
·
프로그래밍 언어/스프링부트
software 성능을 분석하는 관점에서 cpu bound, I/O bound로 분류를 할 수 있습니다. spring webflux는 대량의 I/O 요청에 용이하게 설계 되어 있습니다. 이는 I/O Bound 작업에 가깝습니다. --- CPU Bound - CPU :   - CPU란 computer process unit의 약자입니다. 명령어를 기반으로 계산을 처리하는 중앙처리 장치입니다.      컴퓨터의 모든 작업은 CPU를 사용하게 됩니다. CPU 바운드 작업이란 단순히 CPU를 사용한 다는 것이 아니라 CPU를 중점적으로 사용하는 것을 말합니다. 예를 들면, 암호화, 압축 알고리즘 계산, 다수의 데이터에 대한 집계도 그 예시가 됩니다. 주로 CPU성능에 작업이 크게 좌지우지 됩니다. 밑에서부터 하..
Webflux 소개
·
프레임워크/자바 스프링
Spring WebFlux는 Reactive Stream API를 기반으로 한 비동기, 논블로킹 웹 프레임워크로, 대량의 트래픽과 I/O가 많은 환경에서 기존 서블릿 기반의 Spring MVC보다 더 효율적인 성능을 제공합니다. WebFlux의 핵심 키워드는 Reactive Stream, Non-blocking, Asynchronous입니다.주요 활용 사례마이크로서비스 게이트웨이(Gateway)WebSocket실시간 채팅 서비스하지만 모든 상황에서 Spring WebFlux가 최적은 아닙니다. 특히 CPU Bound 작업(연산이나 계산이 주가 되는 경우)에서는 Spring MVC와 같은 동기 처리 방식이 더 나은 성능을 발휘할 수 있습니다. 반면, I/O Bound 작업(입출력 작업이 많은 경우)에서는 ..
Redis Replication
·
DB/Redis
dc ps Name Command State Ports--------------------------------------------------------------------------redis docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcpreplica docker-entrypoint.sh redis ... Up 0.0.0.0:6378->6379/tcpreplica2 docker-entrypoint.sh redis ... Up 0.0.0.0:6377->6379/tcpdocker-compose exec redis redis-..
Redis 모니터링 (feat. Prometheus, Grafana, Redis 및 Redis Exporter)
·
DB/Redis
Redis 모니터링: 효율적인 성능 관리와 문제 해결을 위한 가이드Redis의 모니터링에 대해 깊이 있게 알아보겠습니다. Redis는 고성능 인메모리 데이터 저장소로 널리 사용되고 있지만, 효율적인 운영을 위해서는 적절한 모니터링이 필수적입니다. 이 글에서는 Redis 모니터링의 다양한 방법과 도구, 그리고 주요 고려사항에 대해 상세히 다루겠습니다.1. Redis CLI를 이용한 기본 모니터링Redis는 기본적으로 몇 가지 유용한 모니터링 명령어를 제공합니다. 이들은 Redis CLI를 통해 쉽게 사용할 수 있습니다.1.1 redis-cli monitor~ docker exec -it d4b14a834ba7 redis-cli monitorOK1682871818.259467 [0 127.0.0.1:5442..
Redis Pub/Sub과 Spring Boot를 활용한 실시간 알림 시스템 구현
·
프로그래밍 언어/스프링부트
Redis의 Pub/Sub 기능과 Spring Boot를 사용하여 실시간 알림 시스템을 구현하는 방법에 대해 알아보겠습니다. 먼저 Redis Pub/Sub에 대한 기본 개념부터 시작하여 실제 구현까지 단계별로 살펴보겠습니다.1. Redis Pub/Sub 소개Redis Pub/Sub(Publish/Subscribe)은 메시지 브로커 패턴을 구현한 기능으로, 발행자(Publisher)가 메시지를 특정 채널에 보내면 해당 채널을 구독하고 있는 모든 구독자(Subscriber)가 실시간으로 메시지를 받을 수 있는 시스템입니다.1.1 Redis Pub/Sub의 주요 특징비동기 통신: 발행자와 구독자 간 직접적인 연결이 필요 없음다대다 통신: 여러 발행자가 여러 구독자에게 메시지를 전달할 수 있음실시간 처리: 메시..
Spring Session
·
프로그래밍 언어/스프링부트
Spring Session과 Spring Security에서 제공하는 Session은 각각의 특징과 기능이 있으며, 주로 웹 애플리케이션에서 세션을 관리하고 보안을 강화하는 데 사용됩니다. 이 둘은 유사한 용도로 보일 수 있지만, 서로 다른 목적과 기능을 제공합니다. 각 개념을 살펴보고, 그 차이점을 설명하겠습니다.1. Spring SessionSpring Session은 분산된 환경에서 HTTP 세션을 관리하고, 세션 데이터를 다양한 데이터 저장소에 저장할 수 있도록 지원하는 모듈입니다. 주로 세션 관리를 중앙화하고, 세션을 외부 저장소(Redis, JDBC 등)에 저장하기 위해 사용됩니다.주요 특징 및 기능1. HTTP 세션 공유:Spring Session을 사용하면 다중 서버 환경에서 세션을 중앙화..
Spring Boot Cache 실습
·
DB/Redis
Spring Data RedisSpring Data Redis는 Spring Framework에서 Redis와의 통합을 쉽게 처리할 수 있도록 지원하는 라이브러리입니다. 이 라이브러리를 사용하면 Redis의 다양한 데이터 구조(문자열, 리스트, 해시, 셋 등)를 다루는 데 필요한 기능을 간편하게 구현할 수 있습니다. 또한, Spring Data Redis는 Redis를 캐시, 세션 관리, 실시간 데이터 처리 등의 목적으로 사용할 수 있도록 돕습니다.설정 및 설치Spring Data Redis를 Gradle과 Maven에서 설치하는 코드를 아래와 같이 보여드리겠습니다.1. Gradlebuild.gradle 파일에 아래와 같이 의존성을 추가합니다.dependencies { implementation '..
Redis Cache 실습(Aka. Write Back)
·
DB/Redis
Write-Back Cache 패턴 실습: Redis와 MySQL을 활용한 구현Write-Back Cache 패턴은 데이터를 캐시에 먼저 쓰고, 데이터베이스로는 일정 주기로 배치 작업을 통해 동기화하는 패턴입니다. 이 패턴은 쓰기 성능을 극대화할 수 있는 장점이 있지만, 캐시 손실 시 데이터 일관성 문제를 발생시킬 수 있습니다. 이번 실습에서는 Spring Boot와 Redis, 그리고 MySQL을 사용하여 Write-Back 패턴을 구현하고, 주기적인 동기화 작업을 배치로 처리하는 방법을 다룹니다.1. Write-Back Cache 패턴 실습 개요핵심 동작 원리:쓰기 작업: 데이터는 먼저 Redis 캐시에 저장. 데이터베이스에는 바로 반영하지 않음.배치 작업: 주기적으로 Redis 캐시에 저장된 데이터..
Redis Cache 실습(Aka. Jedis, Cache Aside)
·
DB/Redis
이번 블로그 글에서는 Docker를 활용하여 MySQL 및 Redis 서버를 구축하고, 이를 Spring Boot, JPA, Redis (Jedis)와 함께 사용하여 간단한 캐싱 시스템을 구현하는 방법을 소개합니다. Cache Aside 패턴을 적용하여 데이터베이스에 저장된 사용자 데이터를 Redis에 캐싱하고, 성능을 향상시키는 방법을 실습합니다.1. 개요**목표: MySQL에 저장된 사용자 데이터를 조회할 때, 이를 Redis에 캐싱하여 성능을 향상시키는 방법을 실습합니다.기술 스택:Spring Boot: 애플리케이션 프레임워크MySQL: 데이터베이스Redis: 캐싱 솔루션Jedis: Redis와의 통신을 위한 클라이언트JPA: 데이터베이스 접근을 위한 ORM2. 환경 설정2.1. Docker를 이용..
Redis Cache 활용법: 성능 최적화를 위한 캐시 전략
·
DB/Redis
1. Cache란?Cache는 빠른 데이터 접근을 위해 임시로 데이터를 저장하는 공간입니다. 기본적으로 자주 접근하는 데이터나 계산 결과를 메모리(RAM)에 저장해 두고, 이후 요청이 들어오면 이를 빠르게 반환하는 방식입니다. CPU에서도 L1, L2 캐시를 이용해 데이터를 빠르게 처리하는 것처럼, Redis도 애플리케이션에서 데이터베이스(DB)보다 빠르게 데이터를 제공하기 위해 사용됩니다.2. Cache의 기본 동작 원리Cache는 데이터 요청 시 데이터베이스(DB)나 서버에서 데이터를 가져오는 대신, 메모리에서 즉시 데이터를 제공하여 성능을 향상시킵니다. 이를 통해 읽기 성능을 극대화하고, 불필요한 DB 접근을 줄여 시스템의 전반적인 성능을 높일 수 있습니다.Cache의 동작은 크게 두 가지로 나눌 ..
Redis Key와 Scan 명령어: 대규모 데이터 검색
·
DB/Redis
Redis에서 KEYS와 SCAN 명령어: 차이점과 사용법Redis는 빠르고 효율적인 인메모리 데이터 저장소로, 다양한 명령어를 제공하여 데이터를 관리하고 조회할 수 있습니다. 그중에서 KEYS와 SCAN 명령어는 Redis 데이터베이스에서 키 목록을 검색할 때 사용하는 두 가지 주요 명령어입니다. 이 글에서는 각 명령어의 특징과 차이점, 그리고 실제로 어떤 상황에서 사용하면 좋은지에 대해 설명하겠습니다.1. Redis의 단일 스레드 처리 방식Redis는 단일 스레드 기반으로 동작합니다. 이는 모든 명령이 하나씩 순차적으로 실행되며, 특정 명령어가 많은 리소스를 소비할 경우 다른 작업에 영향을 줄 수 있음을 의미합니다. 이러한 특성은 키 검색과 같은 명령어에서 중요하게 작용합니다.2. KEYS 명령어: ..
Redis 트랜잭션: 안전한 데이터 변경 처리하기
·
DB/Redis
1. HTTP 트랜잭션HTTP 트랜잭션은 클라이언트와 웹 서버 간의 통신을 나타내며, 다음과 같은 흐름으로 이루어집니다:클라이언트가 HTTP 요청을 전송: 클라이언트는 서버에 요청을 보냅니다. 이 요청에는 URL, 메소드(GET, POST 등), 그리고 추가적인 데이터(예: 헤더, 본문)가 포함됩니다.서버가 응답: 서버는 요청을 처리한 후, 해당하는 응답(HTTP 응답 코드, 데이터)을 클라이언트로 전송합니다.HTTP 트랜잭션은 주로 요청-응답 기반으로 이루어지며, 요청의 성공 또는 실패에 대한 즉각적인 응답이 제공됩니다. 그러나 트랜잭션의 일관성이나 원자성에 대한 보장은 없습니다.2. 데이터베이스 트랜잭션 (DB 트랜잭션)데이터베이스 트랜잭션은 주로 ACID 속성에 기반하여 정의됩니다:원자성(Atomi..
Redis Bitmap 실습: 비트 단위 데이터 처리
·
DB/Redis
Redis에서 발생한 오류는 SETBIT 명령어에 전달된 비트 값이 유효하지 않기 때문입니다. SETBIT 명령어는 특정 비트 위치에 0 또는 1만 설정할 수 있습니다. 다른 값(예: 3, 11, 01 등)은 유효한 비트 값이 아니므로, Redis는 ERR bit is not an integer or out of range 오류를 반환합니다.세부 분석:정상적으로 비트 설정 (100, 120, 130 비트에 1 설정)SETBIT request-somepage-20230105 100 1 # 100번째 비트를 1로 설정(integer) 0 # 이전 비트 값은 0SETBIT request-somepage-20230105 120 1 # 120번째 비트를 1로 설정(integer) 0 # 이전 비트 값은 0..
Redis Geospatial 실습: 좌표 기반 데이터 처리
·
DB/Redis
첨부된 이미지에서 Redis 명령어와 출력 결과를 분석해 드리겠습니다. Redis의 GEO 명령어는 특정 위치의 좌표를 관리하고, 두 지점 사이의 거리를 계산하거나 특정 좌표를 기준으로 가까운 지점을 검색하는 등의 기능을 제공합니다. 아래는 각 명령어와 결과에 대한 설명입니다.1. GEOADD: 위치 추가GEOADD stores:geo 127.029855306619755 37.49911212874 awesomePlace1(integer) 1설명: GEOADD는 지정된 키(stores:geo)에 위도, 경도 좌표를 추가합니다. 여기서는 경도 127.029855306619755와 위도 37.49911212874에 "awesomePlace1"라는 이름을 가진 장소를 추가합니다.결과: (integer) 1은 1..
Redis Sorted Set 실습: 정렬된 데이터를 효율적으로 처리하기
·
DB/Redis
다음은 Redis 명령어를 통해 Sorted Set을 다루는 방법에 대한 설명입니다.1. ZADD: 값 추가zadd "game1:scores" 100 user1 200 user2 300 user3설명: ZADD 명령어는 Sorted Set에 값과 점수를 추가합니다.사용법: zadd key score member [score member ...]동작: "game1:scores"라는 ZSET에 user1, user2, user3라는 값을 각각 100, 200, 300의 점수와 함께 추가합니다.결과: (integer) 3 - 세 개의 값이 성공적으로 추가되었습니다.2. ZRANGE: 범위 내의 값 조회 (점수 기준)zrange game1:scores 0 +inf byscore limit 0 10설명: ZRAN..
Redis Hash 실습: 키-필드-값 데이터 구조 관리하기
·
DB/Redis
아래는 주어진 Redis 명령어들에 대한 설명입니다. 1. HSET: 해시(Hash)에 필드-값 추가HSET users:1:info name greg email greg@gmail.com phone 010-5897-4859설명: Redis의 HSET 명령어는 해시(Hash) 자료구조에 필드-값 쌍을 추가합니다.동작: users:1:info라는 해시에 "name", "email", "phone" 필드와 각각 "greg", "greg@gmail.com", "010-5897-4859" 값을 추가합니다.결과: 3개의 필드가 추가되었으므로, (integer) 3이 반환됩니다.2. HGET: 해시에서 특정 필드의 값 조회HGET users:1:info nameHGET users:1:info emailHGET use..
Redis Set 실습: 집합 연산과 활용법
·
DB/Redis
이 Redis 집합(Set) 자료구조를 사용하여 팔로우 관계를 관리하는 예를 보여주고 있습니다. Redis의 Set은 중복을 허용하지 않는 고유한 값들의 집합을 저장할 수 있는 자료구조입니다. 각 명령어의 의미는 다음과 같습니다:1. SADD 명령어로 Set에 값 추가SADD "users:100:follow" 150 130 120SADD 명령어는 Set에 값을 추가합니다.여기서는 "users:100:follow"라는 키를 가진 Set에 150, 130, 120 값을 추가하고, 추가된 값의 개수는 3입니다.2. SCARD 명령어로 Set의 크기 확인SCARD users:100:followSCARD는 Set의 요소 개수를 반환합니다.users:100:follow Set에는 3개의 값이 포함되어 있습니다.3...
Redis 문자열 실습: 기본 데이터 타입 다루기
·
DB/Redis
~ docker exec -it 06f8c72dd4cc redis-cli127.0.0.1:6379> RPUSH stack1 100(integer) 1127.0.0.1:6379> RPUSH stack1 100(integer) 2127.0.0.1:6379> RPUSH stack1 100(integer) 3127.0.0.1:6379> RPUSH stack1 200(integer) 4127.0.0.1:6379> RPOP stack1"200"127.0.0.1:6379> RPOP stack1"100"127.0.0.1:6379> RPOP stack1"100"127.0.0.1:6379> RPOP stack1"100"127.0.0.1:6379> RPOP stack1(nil)127.0.0.1:6379> RPUSH queu..
Redis 데이터타입 정리: 문자열부터 복합 데이터까지
·
DB/Redis
개요Redis는 Key/Value 구조로 데이터를 저장하는 인메모리 데이터베이스입니다.Key는 텍스트 혹은 바이너리 형태로 저장되며, Redis는 매우 빠른 검색 성능을 자랑합니다.예: "name", "123", "@specialKey!"Value는 문자열부터 리스트, 셋, 해시맵 등 다양한 타입을 가질 수 있으며, 일반적으로 512MB 크기 제한이 있습니다.주요 명령어TTL (Time To Live)TTL은 데이터의 생존 시간을 의미하며, 특정 키에 대한 데이터가 설정된 시간이 지나면 자동으로 삭제되도록 할 수 있습니다.EXPIRE key seconds: 지정한 시간(초)이 지나면 키가 자동으로 삭제됩니다.TTL key: 해당 키의 남은 TTL 값을 초 단위로 반환합니다. 만약 TTL이 설정되지 않은 ..
Redis CLI 사용법: 명령어로 시작하기
·
DB/Redis
설치, 실행 그리고 접속Redis를 Docker를 이용하여 설치, 실행, 그리고 접속하는 방법은 매우 간단합니다. 아래 단계에 따라 진행하면 됩니다.1. Docker 설치 확인먼저, Docker가 설치되어 있는지 확인합니다. 아래 명령어를 터미널에 입력하여 Docker가 설치되어 있는지 확인하세요:docker --version만약 설치되어 있지 않다면 Docker 공식 사이트에서 설치하세요.2. Redis Docker 이미지 다운로드Redis 이미지를 Docker Hub에서 다운로드합니다. 최신 버전의 Redis 이미지를 다운로드하려면 아래 명령어를 실행합니다:docker pull redis이 명령어는 Redis 이미지를 Docker에서 가져와서 로컬에 저장합니다.3. Redis 컨테이너 실행Redis ..
Redis 입문: 기본 개념 톺아보기
·
DB/Redis
특징과 활용 사례1. Redis의 Persistent On Disk (디스크 영속성)Redis는 기본적으로 인메모리 데이터베이스로 설계되어 모든 데이터를 메모리(RAM)에 저장합니다. 그러나 Redis는 데이터 영속성(Persistence) 기능을 제공하여 서버가 예기치 않게 종료되거나 재시작될 경우에도 데이터를 복구할 수 있습니다. Redis의 영속성 기능은 RDB(Snapshot)와 AOF(Append Only File) 두 가지 방식으로 구현됩니다.1.1 RDB (Redis Database Snapshot)RDB는 Redis가 주기적으로 메모리의 스냅샷을 찍어 디스크에 저장하는 방식입니다. 이 방식은 Redis 서버가 재시작될 때 데이터를 빠르게 복원할 수 있도록 돕습니다.장점: 주기적으로 스냅샷을..
접속자 대기열 시스템 #1: 시스템 설계와 Spring WebFlux, Redis
·
프레임워크/자바 스프링
1. 접속자 대기열 시스템 (Spring WebFlux + Redis)1.1 프로젝트 설명접속자 대기열 시스템입니다.이벤트 티켓 예매와 같은 이커머스에서 주로 사용됩니다. 특정 시간대에 이벤트가 발생하게 되면 사용자가 많이 몰리게 되면 트래픽이 급겹하게 몰리게 됩니다.짧은 시간안에 이런 트래픽을 처리 하기 위해서는 특정 기술이 필요합니다. 단순한 Spring MVC가 아닌 Spring Webflux와 Redis를 활용합니다. Spring WebFlux와 Redis가 어떻게 대기열을 관리하는지 보여줍니다.1단계: 대기 페이지 요청/응답사용자가 웹 애플리케이션 서버에 접속을 시도하면, 서버는 사용자에게 대기 페이지를 응답합니다. 이 대기 페이지에서 사용자는 대기열에 등록됩니다.2단계: 대기열 등록사용자가 대..
대규모 트래픽 게시판 구축 시리즈 #14: 배포 자동화
·
프레임워크/자바 스프링
CI/CD는 지속적인 통합과 지속적인 배포라 합니다.Continious IntegrationContinious Delivery(Deployment)CI Process코드작성자동빌드자동 테스트자동화된 통합CD ProcessCI를 통한 자동화자동 배포 준비수동 승인자동 배포GradleGradle은 JVM 기반 프로젝트를 빌드하고 관리하기 위한 오픈소스빌드 자동화 도구플러그인 시스템 :다양한 플러그인을 제공하며, 다양한 프로젝트 유형 지원의존성 관리: Gradle은 프로젝트의 의존성 관리멀티 프로젝트 빌드: Gradle은 여러 프로젝트를 하나의 빌드로 관리 가능.빌드 캐시 : 빌드 시간을 최적화하기 위해 Gradle은 이전 빌드에서 생성된 산출물을 캐시하고 빌드 시간을 단축유연한 태스크: Gradle은 태스크..