분류 전체보기
-
[Infra] Nginx 란?프로젝트/뉴스타 2024. 6. 8. 10:56
Nginx 왜 궁금했을까❓뉴스타 프로젝트에서 인프라 구축을 담당하여 Reverse Proxy, SSL, LoadBalancing 등의 장점이 있는 Nginx를 활용해 보기로 했다. 해당 포스트를 통해 Apache Server와 Nginx의 동작 원리와 차이점을 알아보도록 하겠다.1. Web Server란?정적 콘텐츠를 요청한 클라이언트에게 제공하는 역할html, css, 이미지 등이 정적 콘텐츠에 해당사용자가 정적 콘텐츠를 요청하면 Web Server가 DB에서 파일을 읽어와 그대로 사용자에게 반환하는 로직이다.만약, 비즈니스 로직이 요구되며 WAS를 추가하여 동적으로 데이터를 처리할 수 있게 된다.1.1. Web Server의 역할위와 같은 이유로 Web Server와 WAS를 함께 사용하는데 Web ..
-
[Infra] Apache Kafka프로젝트/당일 2024. 6. 6. 16:21
Apache Kafka 왜 궁금했을까❓당일 서비스에서 WebSocket으로 서버 간의 통신을 지원했는데 안정성과 장애 복구 등에 취약하다는 것을 알고 Kafka로 전환하기로 결정했다. 어느 정도 개념은 알고 있지만 자세하게는 알지 못해 이번 기회에 깊이 공부해 보려고 한다.1. Apache Kafka란?Apache Kafka는 대규모 실시간 데이터 스트리밍을 처리하는 데 사용하는 분산 이벤트 스트리밍 플랫폼이다.Pub-Sub 모델의 메시지 큐 형태로 동작하며 분산 환경에 특화되어 있다.Kafka가 도입되기 전에는 위와 같이 서버 간의 End-to-End로 연결되어 데이터를 주고받았다.이로 인해, 서비스의 복잡도가 증가하고 확장이 어려워지며 장애 발생 가능성도 증가하는 문제점이 존재한다.Kafka가 도입하..
-
[Network] Socket, WebSocket, SockJS, STOMP프로젝트/당일 2024. 6. 5. 14:39
WebSocket, SockJS, STOMP 왜 궁금했을까❓당일 서비스에서 Socket을 이용하여 Spring Boot와 FastAPI 서버간의 통신을 지원했다. 또한, 이전에 Share Your Trip에서도 채팅 서비스를 Socket을 이용하여 구현한 적이 있다. 시간적인 여유가 부족해서 개념적인 부분을 많이 놓쳤는데 이번 포스팅을 통해 확실히 개념을 잡아보려고 한다. Socket과 WebSocket의 차이점Socket과 WebSocket은 다른 개념으로 Socket의 경우 TCP/IP 레이어에서 작동하지만 WebSocket의 경우 HTTP 레이어에서 작동한다.1. WebSocketHTTP 프로토콜과 호환되어 양방향 통신을 지원하기 위해 개발된 프로토콜HTTP 포트(80)을 사용하여 방화벽 제약이 없..
-
[Spring Boot / React Native] FCM을 활용한 알람 서비스 구축프로젝트/당일 2024. 6. 5. 14:38
FCM을 활용한 알람 서비스 구축 왜 궁금했을까❓당일 서비스는 그림일기를 생성하는데 약 2~3분의 시간이 소요된다. 사용자의 요청이 많아지면 응답 시간이 더 늘어날 것이라 판단되어 그림일기 생성이 완료되면 알람을 전송하기로 했다. React Native Expo를 사용하고 있기에 FCM을 용하여 알람 기능을 구현하기로 했다. 1. FCM Push Alarm 통신 과정사용자가 당일 서비스를 가입하게 되면 알람을 위해 Expo Backend에 Expo Token 발급을 요청한다.Expo Backend는 디바이스에 고유한 Expo Token을 발급하여 사용자에게 전송한다.사용자는 이를 받아 API Server에 자신의 Expo Token을 보낸다.API Server는 사용자 DB에 Expo Token을 저장한..
-
[Infra] Kafka를 통한 Spring Boot - FastAPI 통신프로젝트/당일 2024. 6. 3. 00:40
Kafka를 통한 Spring Boot - FastAPI 통신 왜 궁금했을까❓STOMP를 이용하여 서버간의 통신을 구현하고 서비스를 테스트하다 보니 이미지 생성 요청을 처리하는 과정에서 장애가 발생하면 요청이 손실되는 문제점이 있었다. 또한, Spring Boot의 내부 Broker는 인메모리 방식의 메시지 큐로 동작하다 보니 CI/CD 과정에서 서버가 재기동되면 메시지가 유실될 가능성이 매우 높았다. 이를 해결하고자 외부 Broker인 Kafka를 도입하기로 결정했다. [Infra] Apache KafkaApache Kafka 왜 궁금했을까❓당일 서비스에서 WebSocket으로 서버 간의 통신을 지원했는데 안정성과 장애 복구 등에 취약하다는 것을 알고 Kafka로 전환하기로 결정했다. 어느 정도 개념은..
-
[Infra] STOMP를 통한 Spring Boot - FastAPI 통신프로젝트/당일 2024. 6. 2. 14:28
STOMP 통한 Spring Boot - FastAPI 통신 왜 궁금했을까❓당일 서비스는 Spring Boot를 API 서버로 두고 FastAPI를 GPU 서버를 두고 운영하고 있다. Spring Boot는 사용자가 작성한 일기를 받아 FastAPI에게 데이터를 넘겨 이미지 생성을 요청한다. 이후, 이미지 생성이 완료되면 Spring Boot에게 결과 값을 넘겨줘 사용자에게 최종적으로 전달하게 된다. 2개의 서버 사이의 통신을 하기 위해 STOMP를 활용해보려고 한다. [Network] Socket, WebSocket, SockJS, STOMPWebSocket, SockJS, STOMP 왜 궁금했을까❓당일 서비스에서 Socket을 이용하여 Spring Boot와 FastAPI 서버간의 통신을 지원했다. ..
-
[FastAPI] AWS S3를 활용한 이미지 저장프로젝트/당일 2024. 6. 1. 10:15
AWS S3를 활용한 이미지 저장 왜 궁금했을까❓당일 서비스의 경우 사용자가 입력한 일기를 대표하는 이미지를 생성하여 선택할 수 있게 한다. 이미지를 생성한다면 서버에 보관을 했다가 사용자가 필요할 때 사용할 수 있도록 해야한다. 그래서 이미지를 저장하기 위해 AWS S3를 사용하기로 결정했다. AWS S3를 사용해야 하는 이유?S3는 데이터 저장 공간이 무제한이라는 점에서 확장성이 매우 우수S3는 여러 Region에 데이터를 저장하고 있기 때문에 데이터 손실이 일어날 확률이 거의 제로사용하는 만큼 비용을 지불하기 때문에 프로젝트성이 강한 당일 서비스에 적합S3에서 다양한 데이터 암호화 방식을 제공위 이유 외에도 다양한 장점이 많아서 AWS S3를 당일 서비스에 적용시켜 보려고 한다. FastAPI와 A..
-
[AI] Stable Diffusion 성능 향상프로젝트/당일 2024. 5. 31. 09:00
Stable Diffusion 성능 향상 왜 궁금했을까❓Stable Diffusion을 이용하여 4장의 이미지를 생성할 때, GPU T4를 기준으로 약 3분의 시간이 소요됐다. 이미지 한 장당 약 45초의 시간이 소요된 것이다. 많은 사용자 요청을 빠르게 처리하기 위해서 서버를 증설, GPU를 업그레이드, 성능 최적화이 이뤄져야 했다. 예산적인 측면에서 서버 증설과 GPU 업그레이드는 이뤄질 수 없었기에 성능 최적화에 초점을 맞춰 작업이 이뤄졌다. 1. 성능 최적화 방법 Stable Diffusion XLStable Diffusion XL (SDXL) is a powerful text-to-image generation model that iterates on the previous Stable Diff..