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
·
💻/Node.js
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] 07 데이터 암호화
·
Computer Science/데이터베이스
1. MySQL 서버의 데이터 암호화5.7 버전부터: 데이터 암호화 기능 지원, 처음에는 데이터 파일(테이블스페이스)에 대해서만 암호화 기능 제공8.0 버전부터: 데이터 파일, 리두 로그, 언두 로그, 복제를 위한 바이너리 로그 등 모두 암호화 기능 제공 데이터베이스 서버와 디스크 사이의 데이터를 읽고 쓰는 지점에서 암호화/복호화-> 디스크 입출력 이외의 부분에서는 압호화 처리 필요 X= MySQL 서버(InnoDB 스토리지 엔진)의 I/O 레이어에서만 데이터 암호화/복호화 과정 실행사용자의 쿼리를 처리하는 과정에서 테이블의 데이터가 암호화돼 있는지 여부 식별할 필요 X암호화 O 테이블, 암호화 X 테이블 => 동일한 처리 과정: 데이터 암호화 기능이 활성화 O -> MySQL 내부와 사용자 입장에서 차..
kimmeoww
'분류 전체보기' 카테고리의 글 목록 (12 Page)