본문 바로가기

Server

(9)
MQTT - telegraf - InfluxDB 로봇 서버에서 실시간 위치 데이터를 수신하여 데이터베이스에 저장하고, 실시간 위치 조회 및 특정 시간대의 위치 범위 평균 조회와 같은 기능을 제공하는 서버를 요청받았습니다.  기존에는 MQTT-Golang-MongoDB 구조를 사용하여,1초마다 입력받은 위치 데이터를 데이터베이스에 업데이트하는 방식으로 제작하였고, 이 방식이 효율적인지 의문이 들었습니다.이에 위치 데이터(시계열 데이터)의 효율적인 처리를 위해 시계열 데이터베이스를 찾아보았습니다.  이 영상(Using MQTT and InfluxDB for IoT)을 참고하여 MQTT-Telegraf-InfluxDB 구조를 적용해보았습니다.    TSDB(Time Series Database): 시계열 데이터를 효율적으로 저장, 관리하기 위해 설계된 데이..
Goroutine 🔄 Goroutine 고루틴: Go 언어에서 제공하는 경량 스레드 (OS에 의해 관리되지 않고, Go 런타임이 관리하는 User-level 스레드) `go func() {}` 백그라운드에서 메세지를 비동기적으로 처리수천 개의 고루틴을 실행해도 효율적Go 런타임이 고루틴을 자동 관리 Goroutine은 동시성(Concurrency)과 병렬성(Parallelism)을 효율적으로 구현합니다.고루틴의 동시성 유무 차이는 이 영상(Go Concurrency Explained: Go Routines & Channels)을 통해 쉽게 이해해볼 수 있습니다.     *동시성: 여러 작업을 번갈아가며 효율적 실행*병렬성: 여러 작업을 실제로 동시에 실행       ▶️ Channel 채널: Goroutine간 데이터를..
Spring Security Oauth2 Google 로그인 Spring Security: 인증과 접근 제어를 위해 세부적인 맞춤 구성이 가능한 강력한 프레임워크 OAuth2 (Open Authorization 2): 사용자가 비밀번호를 제공하지 않고 타사 애플리케이션의 사용자 정보를 접근할 수 있도록 허용하는 표준 인증 프로토콜     1️⃣ Spring Security에서 OAuth2 Google 로그인하기 Spring Security는 `SecurityFilterChain`을 `@Bean`으로 등록하여 보안 설정을 적용합니다. `pom.xml` org.springframework.boot spring-boot-starter-oauth2-client org.springframework.boot spring-boot-starter-web  ..
MQTT란 https://www.emqx.com/en/blog/the-easiest-guide-to-getting-started-with-mqtt   https://www.emqx.com/en/blog/mqtt-5-introduction-to-publish-subscribe-model 위 문서들을 보고 정리한 글입니다. 1) MQTT MQTT(Message Queuung Telemetry Transport): 리소스가 제한된 디바이스, 낮은 대역폭(Low Bandwidth), 높은 지연시간, 불안정한 네트워크 환경을 고려한Lightweight한 Publish-Subscribe 기반 메세징 프로토콜   2) MQTT가 IoT에 적합한 프로토콜인 이유 1. Lightweight: 패킷 크기가 작음2. Reliabili..
SOLID: 좋은 객체 지향 설계의 5가지 원칙 1. SRP (Single Responsibility Principle)단일 책임 원칙: 한 클래스는 하나의 책임만 가져야 한다.  2. OCP (Open Closed Principle)개방 폐쇄 원칙: 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.* 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자 필요 => Spring container  3. LSP (Liskov Substitution Principle)리스코프 치완 원칙: 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.  4. ISP (Interface Segregation Principle)인터페이스 분리 원칙: 특정 클라이언트를 위한 인터페이스 여러 개가 범용..
Web Server & Web Application Server 그리고 Reverse Proxy Web Server, Web Application Server를 알아보고,Nginx에서 reverse proxy 설정해보기 Spring Boot 애플리케이션 jar 파일을 실행하면서 의문이 들었습니다.Tomcat이 Nginx랑 다른건 뭐지?    Web Server, Web Application Server부터 뭐가 다른지 살펴보았습니다.(이 둘에 대한 글은 정말 잘 정리되어있는 글들이 많으니, 검색 후 몇 개 읽어보는게 좋을 것 같습니다. )  https://code-lab1.tistory.com/199https://story.pxd.co.kr/1647https://www.bluebash.co/blog/web-server-vs-application-server/  저도 몇 개 읽어보고 간단하게 정리를 ..
RTMP server 만들고 HLS로 웹 상에 실시간 비디오 스트리밍 AWS EC2 Ubuntu 22.04 환경에서Nginx RTMP 서버 구축하고,HLS로 웹 상에서 실시간 비디오 스트리밍하기  우선 저는 위와 같은 구조로 실시간 영상 스트리밍 서버를 만들고 있습니다.* 이 글에선 Spring이나 S3를 통한 영상 저장은 다루지 않습니다. 제가 요청 받은 것은1. 웹 상에 실시간 영상 송출2. 클라이언트가 요청 시, 영상 저장이었습니다. RTMP, HLS에 대한 간단한 설명은 아래 첨부하겠습니다.   이번 글의 실습은이 글을 참고하여 진행하였습니다. How to Set Up a Video Streaming Server using Nginx-RTMP on Ubuntu 22.04RTMP also called “real-time messaging protocol” is a ..
[Docker] Docker로 배포하기: 2. 도커 컨테이너 생성, 도커 컴포즈 실행 지난 글에서 가상화와 도커에 대해 공부하면서, 도커가 무엇인지 어느 정도 파악했다.이제 실제 사용까지 해보자! 🧐 Docker desktop 다운로드도커 데스크탑은 컨테이너화된 애플리케이션 및 마이크로서비스를 빌드, 공유 및 실행을 할 수 있는 애플리케이션이다. https://docs.docker.com/desktop/ Overview of Docker DesktopExplore more of Docker Desktop, what it has to offer, and its key features. Take the next step by downloading or find additional resources.docs.docker.com 도커 데스크탑 다운로드 후 터미널 창에서 docker --vers..
[Docker] Docker로 배포하기: 1. 가상화, Docker란 도커.. 도커 환경에서... 도커 이미지... 이제 4학년인 IT대 학생으로서 수업에서도 꽤나 듣던 도커 항상 대충 알려주신 대로 얼렁뚱땅 써본 적은 있어도, 왜 쓰는지, 어떻게 쓰는지 공부해본 적은 없어서 쓸 때마다 새로운 느낌이었다... 하하;; 써본 적은 있어도, 막상 쓸 줄은 모르는 Docker😭 이런 애매한 상태에서 원티드에서 진행하는 4월 프리온보딩 백엔드 챌린지가 '도커로 배포 경험'이라는 것을 보았고, 도커를 외면하며 꼭두각시처럼 사용했던(?) 지난 과거를 청산하고자 신청하게 되었다. 이번 기회로 도커를 왜 쓰는지 명확하게 나만의 답을 말할 수 있으며, 실제 적절한 상황에서 사용할 수 있길 바라며 블로그에 정리해보겠다. 첫 글은 Docker란... 🧐 가상화 (Virtualization) ..