gRPC / WebFlux + Netty / WebSocket
·
💻/Spring | SpringBoot
chat service : 실시간 AI 채팅 서비스채팅 AI 모델 ←gRPC→ SpringBoot 서버 ←WebSocket→ 클라이언트채팅 AI 모델: Python, FastAPI서버: Java, SpringBoot클라이언트: React, TypeScript기술 사용 이유gRPC언어에 독립적이고 protocol buffers로 직렬화하여 데이터 전송 속도가 빠름AI 모델과의 스트리밍 통신을 비동기로 처리하고, 응답을 실시간으로 전송WebFlux + Netty논블로킹과 병렬 처리 지원비동기 처리해서 사용자가 여러 개의 요청을 보냈을 때 병렬로 처리해서 처리 속도를 높임참고데이터베이스에 채팅 내역 저장 XAWS EKS에 배포파일구조build.gradlebuildscript { ext { protobufVe..
gRPC 실습(연습)
·
💻
파일 구조build.gradlebuildscript { ext { protobufVersion = '3.25.1' protobufPluginVersion = '0.8.14' grpcVersion = '1.58.1' }}plugins { id 'java' id 'org.springframework.boot' version '3.3.4' id 'io.spring.dependency-management' version '1.1.6' id 'com.google.protobuf' version '0.9.4'}group = 'com.example'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }..
gRPC
·
💻
등장배경1. Server-Client Model하나의 메인 프레임에서 동작하는 Monolothic 구조로 설계 시절 네트워크 통신 중요 X고가인 메인 프레임워크 → 비교적 저가의 워크스테이션 서버로 대체하고 싶어함But, 메인 프레임워크의 초고양 사양 그대로 제공하는데 한계⇒ 메인 프레임워크 기능 → 워크스테이션 서버로 분산 + 네트워크 연결로 서비스하는 방식 채택= Server-Client Model⇒ 서버-서버, 서버-개인PC 간 네트워크 연결 및 통신 중요→ OSI 7 layer, TCP/IP 등 네트워크 계층 구조 정의, 발전 2. IPC프로세스는 기본적으로 상호독립적메모리 공유 X → 각자 자신의 일만 하고 서로 간섭 XBut, 필요에 따라 프로세스 간 정보를 교환해야 하는 경우→ 별도의 수단 ..
MyBatis VS. JPA
·
💻
SQL Mapper개발자가 작성한 SQL 실행 결과를 객체에 매핑시켜주는 프레임워크MyBatisORM(Object Relational Mapping)객체와 DB의 데이터를 자동으로 매핑시켜주는 프레임워크JPA데이터를 관계형 데이터베이스에 저장(= 영속화, persistence)DB를 사용할 때 번거로운 반복작업 없애줌MyBatis: SQL 문 → Java와 분리 ⇒ 별도 파일로 관리 → SQL 개발, 유지 보수 용이JPA: SQL 문 만들 필요 X ⇒ 자동화, 반복작업 줄여줌 복잡한 쿼리와 SQL 제어 필요 → MyBatis간단한 매핑 및 객체 지향적인 접근 필요 → JPAMyBatis반복적인 JDBC 프로그래밍 단순화 → 불필요한 Boilerplate 코드 제거Java 소스코드에서 SQL문 분리 → 별..
[NodeJS] Express / Passport / Middleware / Sequelize
·
💻
express$ npm i express $ npm i -D nodemonnodemonpassport$ npm i passport passport-local passport-kakao bcrypt// app.jsconst passport = require('passport'); const passportConfig = require('./passport'); const app = express();passportConfig(); app.set('port', process.env.PORT || 3001);app.use(session({ resave: false, saveUninitialized: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly:..
[Real MySQL 8.0 1] 08 인덱스 - 1. 디스크 읽기 방식 / 2. 인덱스란? / 3. B-Tree 인덱스
·
📓/데이터베이스
8.0 버전부터: MyISAM 스토리지 엔진에서만 제공하던 전문 검색 or 위치 기반 검색 기능도 모두 InnoDB에서 사용 OBut, MySQL 서버의 옵티마이저가 발전하고 성능이 개선돼도 관리자의 역할 중요 1. 디스크 읽기 방식어떻게 디스크 I/O를 줄이느냐 -> 데이터베이스의 성능 튜닝1) 하드 디스크 드라이브(HDD)와 솔리드 스테이트 드라이브(SDD)컴퓨터에서 CPU or 메모리 같은 주요 장치는 대부분 전자식 장치But, 하드 디스크 드라이브는 기계식 장치 -> 서버에서 항상 병목이 됨=> 기계식 하드 디스크 드라이브 대체: 전자식 저장 매체인 SSD(Solid State Drive)같은 인터페이스(SATA/SAS) 지원 -> 내장 디스크 DAS or SAN에 그대로 사용할 수 있음기존 하드..
kimmeoww
'분류 전체보기' 카테고리의 글 목록 (15 Page)