본문 바로가기

전체 글

(46)
GitHub Actions CI/CD 1. CI/CD란CI (Continuous Integration): 코드를 Git에 푸시하면 자동으로 빌드/테스트CD (Continuous Deployment): 테스트 통과하면 자동으로 서버에 배포왜 필요한가?버그를 빨리 발견 (자동 테스트)배포 실수 방지 (자동화) 2. GitHub Actions로 기본 CI/CD 만들기2.1 프로젝트 구조your-project/├── .github/│ └── workflows/│ └── ci.yml # 이 파일만 만들면 됨!├── src/├── build.gradle└── gradlew 2.2 기본 CI/CD 파일 생성# .github/workflows/cicd.ymlname: CI/CD Pipelineon: push: bran..
Netty Framework 이해하기 (5부): Spring Framework와의 통합 지금까지 Netty의 기본 개념, 핵심 컴포넌트, WebSocket 통신, 그리고 성능 최적화 및 모니터링에 대해 알아보았습니다. 이번 글에서는 Netty를 Spring Framework와 통합하는 방법에 대해 살펴보겠습니다. 두 강력한 프레임워크의 장점을 결합하여 확장성 있고 유지보수가 용이한 네트워크 애플리케이션을 구축하는 방법을 알아봅시다. 1. Netty와 Spring 통합의 이점Netty와 Spring은 각각 자신의 영역에서 강력한 기능을 제공합니다. 두 프레임워크를 통합함으로써 얻을 수 있는 이점을 살펴보겠습니다.Netty의 강점고성능 비동기 네트워킹: 이벤트 기반 논블로킹 I/O프로토콜 유연성: 다양한 네트워크 프로토콜 지원세밀한 네트워크 제어: 저수준 네트워크 프로그래밍 가능Spring의 ..
Netty Framework 이해하기 (4부): 성능 최적화와 모니터링 지금까지 Netty의 기본 개념, 핵심 컴포넌트, 그리고 WebSocket을 활용한 실시간 통신 시스템 설계에 대해 알아보았습니다. 이번 글에서는 Netty 애플리케이션의 성능을 최적화하고 효과적으로 모니터링하는 방법에 대해 살펴보겠습니다. 고성능 네트워크 애플리케이션을 구축하기 위한 핵심 기법과 모범 사례를 알아봅시다. 1. Netty 성능 최적화 기법고성능 Netty 애플리케이션을 구축하기 위해서는 다양한 측면에서의 최적화가 필요합니다. Netty 자체의 기능을 활용한 최적화 기법을 살펴보겠습니다. 메모리 관리 최적화메모리 관리는 Netty 애플리케이션의 성능에 큰 영향을 미칩니다. ByteBuf 풀링Netty의 ByteBuf 풀링을 활용하면 메모리 할당 및 해제 오버헤드를 줄일 수 있습니다:Pool..
Netty Framework 이해하기 (3부): WebSocket 프로토콜과 실시간 통신 지금까지 Netty의 기본 개념과 핵심 컴포넌트에 대해 살펴보았습니다. 이번 글에서는 Netty를 활용한 WebSocket 프로토콜 구현과 실시간 통신 시스템 설계에 대해 알아보겠습니다. 실시간 채팅, 게임, 협업 도구 등 다양한 애플리케이션에서 활용되는 WebSocket의 원리와 Netty에서의 구현 방법을 이해해 봅시다. 1. WebSocket 프로토콜 이해하기WebSocket은 HTTP 기반 환경에서 양방향 통신을 가능하게 하는 프로토콜입니다. 전통적인 HTTP 요청/응답 모델과는 달리, 연결이 한 번 수립되면 클라이언트와 서버가 자유롭게 메시지를 주고받을 수 있습니다.HTTP vs WebSocketHTTP의 한계:클라이언트만 요청 시작 가능각 요청마다 새로운 연결 필요 (HTTP/1.1)요청-응답..
Netty 컴포넌트별 프로세스 단계와 역할 Netty의 네트워크 통신 과정에서 각 컴포넌트가 어떤 단계에서 어떤 역할을 하는지 상세히 설명하겠습니다. 전체 프로세스 개요Netty의 네트워크 통신은 크게 다음 단계로 진행됩니다:서버 초기화 및 바인딩클라이언트 연결 수락데이터 수신 처리 (인바운드)데이터 송신 처리 (아웃바운드)연결 종료 1. 서버 초기화 및 바인딩 단계ServerBootstrap역할: 서버 설정의 중앙 집중화수행 작업:EventLoopGroup 설정 (Boss와 Worker 그룹)서버 채널 클래스 지정 (NioServerSocketChannel)채널 옵션 설정 (SO_BACKLOG, SO_REUSEADDR 등)초기 ChannelHandler 등록ServerBootstrap bootstrap = new ServerBootstrap()..
동기 / 비동기 & 블로킹 / 논블로킹 조합 1. 동기 + 블로킹 (가장 일반적)// Java의 일반적인 파일 읽기String content = Files.readString(Paths.get("file.txt")); System.out.println("파일 내용: " + content); System.out.println("다음 작업 수행");readString() 호출 파일 읽기 완료까지 대기 (블로킹) 호출자가 완료를 확인 (동기) 다음 코드 실행 특징: 함수가 완료될 때까지 기다리고(블로킹), 호출자가 완료 여부를 직접 확인함(동기) 2. 동기 + 논블로킹// Java NIO의 논블로킹 소켓SocketChannel channel = SocketChannel.open();channel.configureBlocking(false);while..
Netty Framework 이해하기 (2부): 핵심 컴포넌트 심층 분석 이전 글에서 Netty의 기본 개념과 비동기 네트워크 프로그래밍의 원리에 대해 알아보았습니다. 이번 글에서는 Netty의 핵심 컴포넌트들을 더 깊이 살펴보고, 각 요소가 어떻게 상호작용하는지 이해해보겠습니다. 1. ByteBuf - Netty의 데이터 컨테이너Java NIO의 ByteBuffer는 사용하기 복잡하고 제한적입니다. Netty는 이러한 문제를 해결하기 위해 ByteBuf라는 개선된 버퍼 구현을 제공합니다.ByteBuf의 주요 특징읽기/쓰기 인덱스 분리ByteBuf는 별도의 읽기 인덱스와 쓰기 인덱스를 유지합니다:readerIndex: 데이터를 읽을 위치writerIndex: 데이터를 쓸 위치capacity: 버퍼의 총 크기이 분리된 인덱스 덕분에 데이터를 읽고 쓰는 작업이 독립적으로 수행됩니..
Netty Framework 이해하기 (1부): 비동기 네트워크 프로그래밍의 기초 오늘날 고성능 네트워크 애플리케이션 개발에 있어 Netty는 핵심적인 프레임워크로 자리 잡았습니다. 카카오톡, 라인 메신저, 넷플릭스, 엘라스틱서치 등 많은 기업에서 핵심 인프라로 활용하고 있죠. 이 글에서는 Netty 프레임워크의 기본 개념과 이론적 배경에 대해 알아보겠습니다. 1. Netty란 무엇인가?Netty는 비동기식 이벤트 기반 네트워크 애플리케이션 프레임워크입니다. Java NIO(Non-blocking I/O)를 기반으로 구축되었으며, 고성능 프로토콜 서버와 클라이언트를 쉽게 개발할 수 있도록 설계되었습니다.Netty의 주요 특징:비동기 및 이벤트 기반: I/O 작업이 완료되면 이벤트를 통해 알림고성능: 기존 블로킹 I/O보다 훨씬 뛰어난 처리량확장성: 많은 동시 연결 처리 가능프로토콜 지..