본문 바로가기

개발기술

(119)
비동기 Web Flux WebFlux란?Spring WebFlux는 Spring 5에서 도입된 Reactive Programming을 지원하는 비동기, 논블로킹(non-blocking) 웹 프레임워크입니다. 기존의 Spring MVC가 Servlet 기반의 동기적, 블로킹 방식으로 작동하는 것과는 달리, WebFlux는 Reactive Streams API를 기반으로 하여 더 높은 확장성과 비동기 처리를 제공합니다.WebFlux의 주요 특징논블로킹 I/O (Non-blocking I/O) WebFlux는 Netty, Undertow와 같은 비동기 I/O 처리 엔진과 통합되어 동작합니다. 요청과 응답 처리 과정에서 I/O 작업이 블로킹되지 않아 많은 요청을 동시에 처리할 수 있습니다. Spring WebFlux는 비동기 I/O를..
Spring 스케쥴러 Spring SchedulerSpring Scheduler는 Spring Framework의 구성 요소로, 개발자가 특정 간격이나 시간에 작업을 수행할 수 있도록 도와줍니다. Spring Task API의 일부로, 외부 라이브러리에 의존하지 않고도 작업을 스케줄링할 수 있습니다. 백그라운드 작업 실행, 주기적인 데이터 처리, 작업 자동화, 정기적인 유지 보수 작업에 유용하게 사용할 수 있습니다.Spring Scheduler의 주요 기능간단한 설정:주석(annotation) 또는 XML 설정을 통해 스케줄 작업을 구성할 수 있어 간단하게 설정하고 관리할 수 있습니다.Spring Boot와의 통합:Spring Boot에서는 최소한의 설정으로도 사용 가능하며, 많은 설정이 자동으로 구성됩니다.Fixed Del..
빌드와 Gradle 개념, Gradle 빌드 사용법 빌드개념 설명빌드(Build) : 소스 코드를 컴파일, 테스트, 패키징 등을 실행하여 컴퓨터가 실행할 수 있는 실행 파일로 만드는 과정컴파일 (Compile) : 프로그래밍 언어로 작성된 소스 코드를 기계어로 변환하여 실행 가능한 파일로 만드는 과정입니다. 예를 들어, Java 코드(.java)를 바이트 코드(.class)로 변환합니다. 페이지들을 한글로 번역하기컴퓨터는 사람이 작성한 고수준 언어(Java, C, Python 등)를 직접 이해하지 못하기때문에 하지 못하기때문에 기계어(또는 중간 언어)로 바꿔 CPU에서 실행할 수 있는 언어로 변경하는 과정패키징 (Packaging) : 컴파일된 파일을 하나의 패키지로 묶어 배포 가능한 형태로 만드는 단계입니다. Java에서는 .jar 파일이나 .war 파..
빌드 후 서버 배포 로컬배포mavenLocal 배포자체 library를 쓰는 프로젝트에서 local 배포를 진행할때 mavenLocal 저장소에 자체 library 빌드를 진행한다.clean build publishToMavenLocal -x testmavenLocal 배포 저장위치gradle 에서 아래의 두가지 변수에 따라서 배포파일의 위치가 결정된다.group = 'some.platform'version = '1.0.0'~/.m2/repository/{groupId}/{artifactId}/{version}/ 전체 빌드와 배포 프로세스개발 단계 : 개발자가 Java 코드를 작성합니다.빌드 : Gradle을 사용하여 전체 빌드 과정을 처리합니다.서버 배포.jar 파일( .class 파일의 묶음)을 실행시키기 위해서 ..
비동기 프로그래밍 패턴과 처리 방식 동기처리(Synchoronous Programming)  여러작업을 순차적으로 실행하도록 개발하는 방법. 동기 처리는 한 작업이 끝나야 다음 작업을 시작할 수 있는 방식입니다. 순차적인 작업을 위해서 현재 진행중인 작업의 완료를 기다리며 대기하는 구조입니다.비동기처리(ASynchoronous Programming)  여러 작업을 동시에 실행하는 프로그래밍 방법론. 비동기 처리는 한 작업이 끝나기를 기다리지 않고, 다른 작업을 수행할 수 있는 방식입니다.  비동기처리방식은 두가지 종류가 존재하며 멀티스레드 방식과 Non-Blocking I/O 방식이 있다. 멀티스레드 방식은 작업의 세트를 여러 스레드별로 나누어 가지어 동시에 실행하는 방식. 논블럭킹 방식은 하나의 스레드가 여러가지 작업을 담당하는데, I/..
Docker 개념 및 커맨드 가상화(Virtualization) vs. 컨테이너(Containerization)가상화: 하나의 물리 시스템(호스트)에서 하드웨어 자원을 소프트웨어적으로 나누어 여러 개의 독립된 컴퓨팅 환경(가상 머신, VM)을 생성하는 기술. 하이퍼바이저라는 소프트웨어가 지원. 각 가상머신은 독립적인 컴퓨팅 환경으로 독립적인 OS를 갖고 어플리케이션 실행가능.독립된 환경 : 자원, OS, 커널, 파일 시스템 등 모든 것이 완전하게 분리됨.컨테이너 : 애플리케이션과 그 실행에 필요한 필요한 모든 실행 환경(코드, 라이브러리, 시스템 도구 등)을 패키징하여 실행하는 경량화된 가상화 기술. 주로 리눅스 컨테이너 기술(Linux Containers, LXC) 기반. 각 컨테이너는 독립적인 OS가 아니라 OS 커널을 공유하면..
MSA도입을 위한 Spring Cloud Spring Cloud Gateway 설정은 마이크로서비스 아키텍처에서 여러 개의 독립된 서비스로 나누어진 애플리케이션에 대한 요청을 중앙에서 관리하고, 라우팅과 필터링을 수행하기 위한 구성입니다. 이를 통해 사용자는 여러 서비스에 개별적으로 접근하지 않고, 하나의 진입점(Gateway)을 통해 서비스에 접근할 수 있게 됩니다.   1. 프로젝트 환경 설정Spring Boot 프로젝트 생성: Spring Initializr 또는 IDE를 통해 Spring Boot 프로젝트를 생성하고, Spring Cloud Gateway와 Security에 필요한 의존성을 추가합니다.의존성 추가:Spring Cloud Gateway: 라우팅과 필터링을 제공.Spring Security: 보안 기능을 제공하여 인증과 인가..
Spring JPA Entity 설정 Entity 생성하기(Domain 생성하기, Table 생성하기)Entity 생성하기  엔티티(Entity)란 JPA에서 데이터베이스 테이블과 매핑되는 클래스를 의미하며, 각 엔티티 객체는 데이터베이스에서 독립적으로 관리되는 레코드(행, row)를 나타냅니다. 자바클래스 중 DB Table과 연결할 클래스를 marking하기 위해서 @Entity을 사용한다. 또한, class명과 DB Table명이 다르다면 Class에 @Table(name="")을 통해서 어떤 테이블과 맵핑할 것인지 명시해줘야한다.@Entity : JPA에서 해당 클래스가 데이터베이스 테이블과 매핑됨을 나타내는 필수 애너테이션@Table(name="테이블명") : 클래스명과 테이블명을 다르게 지정하고 싶은 경우에는 @Table 어노테이..