Springboot JPA Entity 변수 매핑 정리 (Java, Kotlin)
·
Programming/BackEnd
- 이번 포스팅에선 Java Springboot 에서 JPA 라이브러리를 사용할 때,Entity 에서 각 변수를 어떻게 매핑해야 할 지에 대해 정리하겠습니다. - JPA 는 ORM(Object Relational Mapping) 입니다.즉, Database 의 저장 정보를 Programming Language 에서의 객체로 다루는 기술로,Database 의 테이블 단위로 Java Class 에 매핑하여 사용합니다. 즉, Database 테이블이 하나의 class 로 표현해야 하며,이때에 각 컬럼은 프로그래밍 언어의 변수로 표현됩니다. 본 게시글에서는 Database 컬럼 타입별 Java 언어에서 어떠한 변수로 매핑해야 하는지에 대해 정리할 것입니다. RDBMS 는 MySQL 을 기준으로 하며,이에따라 M..
FastAPI 비동기 처리 주의사항
·
Programming/BackEnd
- FastAPI 에는 동기 처리 방식과 비동기 처리 방식이 있습니다.동기 처리 방식은, API 요청시 하나의 요청을 다 처리한 후 다음 요청을 처리하는 방식입니다.즉, 처리에 5라는 시간이 걸리는 작업과 1이라는 시간이 걸리는 작업이 순차적으로 요청된다면,작업 5 가 다 끝나야 작업 1 이 시작되는 것이죠. 비동기 처리 방식은 다릅니다.작업 5 가 처리되는 도중에 작업 1이 요청되면, 두 작업이 병렬적으로 처리되는 방식입니다. 이처럼 서버의 작업 처리는 비동기 방식이 보다 성능상 유리하다는 것을 알 수 있습니다. - FastAPI 에서 비동기적으로 작업을 처리할 때에는 멀티 스레드를 사용하는 것이 아닙니다.멀티 스레드를 사용하면 위에서 설명한 병렬 처리가 될테지만, 스레드를 너무 많이 생성하면 일어날 ..
FastAPI DataBase ORM 사용 방법 정리 (SQLAlchemy, 비동기 처리, Transactional 처리, 페이징 처리)
·
Programming/BackEnd
- 이번 포스팅에선 FastAPI 에서 Database 를 사용하는 방법을 정리할 것입니다.https://github.com/RaillyLinker/Python_FastApi_Template설명에 사용할 코드는,위 레포지토리 안의 module_sample_sql_alchemy 폴더에 모듈 단위로 떼어내 정리하였으므로 참고하면 되며,본 게시글에서는 코드상 중요한 부분을 설명하겠습니다. - ORM 이란,Object-Relational Mapping의 줄임말입니다.ORM은 데이터베이스의 테이블을 프로그래밍 언어(예: Python, Java 등)의 '객체'처럼 다루게 해주는 기술로,SQL 쿼리(SELECT, INSERT, UPDATE 등)를 직접 작성하는 대신,클래스(예: User, Product)와객체(예: ..
서버 부하 테스트 - Locust 사용 (FastAPI, Springboot 비디오 스트리밍 성능 비교), FastAPI Media Streaming 코드 수록
·
Programming/BackEnd
- 이번 포스팅에선 Locust 를 사용하여 서버에 인위적으로 부하를 가하고, 그 결과를 파악하는 방법을 알아보고,FastAPI 와 Springboot 에서 비디오 스트리밍을 할 때의 성능을 비교하겠습니다. (Locust 란)- Locust는 분산형 성능 테스트 도구로, 주로 웹 애플리케이션이나 웹 서비스의 부하 테스트를 수행하는 데 사용됩니다.Locust는 Python으로 이루어져 있으며, 그렇기에 Python 문법을 사용하여 테스트케이스를 작성해야 합니다.ChatGPT 등의 생성형 AI 로 쉽게 테스트 케이스를 만들 수 있으므로 사용이 매우 쉽다고 할 수 있습니다.- Locust의 주요 특징: 1. 사용자 정의 테스트 시나리오:Locust는 사용자가 정의한 Python 코드를 기반으로 테스트 시나리오..
Python FastAPI 개발 방법 정리
·
Programming/BackEnd
- 이번 포스팅에서는 Python 의 FastAPI 에 대해 정리하겠습니다.프레임워크 사용 개발 방식 설명이므로 기본적인 프로그래밍 지식 및 Python 언어에 대해서는 설명을 생략합니다. - FastAPI는 Python 3.6+ 버전을 기반으로 만들어진 비동기(Async) 웹 프레임워크입니다.주요 특징으로는,단순하고 쉬운 파이썬 언어에서 추가 보완하여 보다 안전한 프로그래밍을 위한 변수 타입 처리, Nullable 제어 등이 가능하며,내부적으로 Swagger 를 도입하여 API 를 자동으로 문서화해주고,비동기 프로그래밍을 지원하여 높은 성능을 낼 수 있게 해준다는 강점이 있습니다. - 저는 springboot 를 중심으로 한 백엔드 개발자로서,굳이 파이썬의 백엔드 프레임워크를 익힌 이유는 아래와 같습니..
Python 서버 실시간 웹캠 영상 처리 방법 (ReactJS, WebRTC, FastAPI, OpenCV) - 미디어 통신 실시간 영상 합성
·
Programming/ETC
- 이번 포스팅으론 원격 환경에 위치한 웹캠 영상을 Python 서버로 받아와 영상 프레임을 처리하는 방식을 알아보겠습니다.본 기술을 익힘으로써 기대되는 응용 능력으로는,원격 모니터링 및 보안 서비스, 영상 채팅 서비스에서의 인공지능 필터링, IoT 에서의 디바이스 원격 조작 등에 사용되는 기술 원리를 이해하고 구현할 수 있는 가장 기본적인 능력을 갖출 수 있을 것입니다. - 본 게시글에서 실습할 최종 산출물은,ReactJS 에서 웹캠으로 받아온 영상을 네트워크 통신으로 Python 서버에 전송하여,해당 서버에서 간단한 영상 분석 및 합성을 하는 소프트웨어를 만들 것입니다.웹캠 디바이스 - 클라이언트 브라우저 -- [영상 데이터 네트워크 통신] -- Python 서버 - 영상 합성 - 영상 표시 (Web..
IoT MQTT(Message Queuing Telemetry Transport) 프로토콜 설명 및 실시간 통신 실습(Server Docker EMQX 클러스터링, Client Javascript & C++)
·
Programming/ETC
- 이번 포스팅에서는,IoT 에 주로 사용되는 MQTT 프로토콜에 대해 알아보고,MQTT 메시지 전달 서버(브로커)를 EMQX 기술을 사용하여 구축한 후,이를 기반으로 연결되는 클라이언트를 구축하여 테스트까지 진행해보겠습니다. 서버 역할을 하는 브로커는 EMQX 를 Docker 를 사용하여 구축하고,확장성을 위하여 클러스터링 설정 및 보안을 위해 기본 인증/인가 설정을 적용할 것입니다. 클라이언트 역할로는,엔터프라이즈급 서비스 백엔드에서 일반적으로 사용되는 Java Springboot,데이터 분석 분야에서 두각을 나타내는 Python,웹 프론트엔드 분야에서 대체 불가능한 JavaScript,그리고 IoT 단말기 부분에서 사용되는 C++ 위에서 나열한 예시를 전부 다루면 좋겠지만,본 게시글에서는 가시적인 ..
IoT(Internet of Things, 사물 인터넷) 설명 및 기술 로드맵
·
Programming/ETC
- 이번 포스팅으론 IoT 에 대해 알아보겠습니다.IoT 개념과 더불어 IoT 를 개발하기 위해 필요한 기술 및 로드맵까지 정리합니다. - IoT 는 단일 기술이 아닌 여러 기술들 융복합 기술입니다.특정 분야의 개발자시라면 해당 분야의 기술 습득은 패스할 수 있으며,아직 개발 경험이 없으시다면 웹 개발 부분으로 먼저 접근하시는 것을 추천드립니다. (IoT란?)Internet of Things (사물인터넷) = "사물(Things)" + "인터넷 연결(Internet)" 말 그대로 일상 속 사물들이 정보 단말로서 인터넷에 연결되어 데이터를 주고받고 동작하는 기술입니다. 예를 들어,스마트 에어컨이 자동으로 온도를 조절하거나,스마트워치가 심박수를 측정하고 서버에 저장하거나,집 앞에 사람이 오면 자동으로 조명이..
ReactJS 컴포넌트 개발 방법론
·
Programming/FrontEnd
- 이번 포스팅에서는 ReactJS 프론트엔드의 개발 방법론에 대해 작성할 것입니다. 실습에 사용할 기술은, Typescript : JavaScript 에서 Type Safety 를 적용한 언어react-router-dom : 웹 페이지별 접근 주소를 설정하는 라이브러리axios : 클라이언트인 브라우저에서 서버로 네트워크 요청을 보내기 위한 라이브러리 크게 위와 같으며,상태 관리를 위한 라이브러리인 Redux 와 같은 기술은 사용하지 않지만,라이브러리에 의존하지 않고도 충분히 합리적인 상태 관리를 할 수 있는 방식을 준비하였습니다. https://github.com/RaillyLinker/ReactJs_Template위의 Github 프로젝트를 기반으로 설명할 것이므로 참고하세요. (컴포넌트란?)Re..
분산 소켓 서버 설명 및 구현(Springboot, SockJS, STOMP, Kafka, Redis, Javascript)
·
Programming/BackEnd
- Socket 을 사용하여 채팅과 같은 서비스를 구현한다면, 통신하는 클라이언트 상호간 직접적으로 데이터를 주고받을 수 있는 WebRCT 와 같은 P2P 기술과는 달리 데이터 전송마다 중간에 서버를 거쳐야만 합니다. 이로 인하여 모든 서버-클라이언트 구조와 마찬가지로 연결된 클라이언트 수만큼 서버에 부담이 걸릴 수 있는 구조라는 것으로, 소켓 서버 역시 분산 시켜 이러한 부하를 효율적으로 분산시킬 수 있다면 안정적인 Socket 서버를 구축하고 운영 할 수 있을 것입니다. 이번 포스팅에서는 분산 소켓 서버를 구축하는데에 필요한 기본 지식을 간단히 알아보고, Springboot 를 사용하여 효율적인 채팅 서버를 구축하는 방법론을 정리해보겠습니다. (소켓 서버 설명) 일반적인 소켓 서버의 구조는 위와 같습..