목록전체 글 (32)
DevYGwan

저희는 Sentry을 통해 알림 시스템을 연동해서 사용하고 있습니다. 서버에서 로직 상 문제가 발생하거나 에러를 발생하면, Slack과 연동된 Sentry 알림을 통해 바로 알림을 확인할 수 있습니다. 때는, 퇴근하려던 무렵... 갑자기 Sentry에 아래와 같은 알람이 떴습니다. OutOfMemory Error... 갑작스럽게 OOM 에러가 발생해, 전체 서비스가 중단된 문제였습니다. 언제봐도 OOM은 무섭네요... OOM 에러가 발생해 서버를 확인해보니, 서버가 죽어서 아무런 요청 처리도 할 수 없는 상태가 되어 있었습니다. 다행히 저희는 공장 데이터를 관리하고 있는데, 공장의 실시간 데이터는 이러한 서버 장애를 대비하기 위해 서버와 상관 없이 계속 DB에 수집되고 있기 때문에 데이터 유실 문제는..

저희는 현재 프론트엔드 2개 & 서버 한개로 이루어 진 서비스를 운영 중입니다. 일반 로그인과 소셜 로그인을 둘 다 사용하고 있고 이를 효율적으로 사용하기 위해 Firebase Authenticaion Server을 사용하고 있습니다. 저희가 원래 Firebase을 사용한 이유는Google에서 제공하는 Firebase을 기반으로 한 인증 서버기 때문에 안전하다.여러 소셜 로그인을 쉽게 제공할 수 있다.별도의 서버를 구축할 필요 없이 Google이 관리하는 인프라를 활용 할 수 있어 편하다.등의 장점이 있습니다. 저희는 현재 이 인증 서버에서 전반적인 사용자 인증(아이디, 패스워드), 토큰 발급 & 검증 등의 작업을 위임하고 있습니다. 자체적인 UI 제공 및 프론트 & 백엔드와의 연동 라이브러리가 잘 구축..

저희는 기본적으로 IoT 데이터의 경우 대용량 데이터이기 때문에 NoSQL 기반의 데이터베이스 인 ScyllaDB을 사용하여 데이터를 관리했습니다. 그러다보니 기본적인 데이터 (유저 데이터, 장비 Meta 데이터 등)도 ScyllaDB을 사용해서 개발을 진행했습니다. 하지만 NoSQL이다보니, 정형화 된 데이터와 트랜잭션 처리가 RDB보다 효율적이지 못해 이번에 추가적인 "승인" 도메인을 개발하면서 RDB을 반영하기로 결정했습니다. RDB을 반영하면서 고민한 사항은 크게 3가지 입니다.어떤 RDB을 사용할까?DB 서버가 다른데, 다른 서버 간의 트랜잭션을 관리 할 일이 있을까?백엔드 서버는 어떻게 처리할까? 하나로 가져갈까 DB 별로 분리해서 가져갈까? 이렇게 3가지를 고민했습니다. 고민하고 내린 결과는..

기본적으로 서버에서 IoT 기기들과 통신할 때, MQTT 프로토콜을 사용해서 통신합니다. 이 때 서버와 IoT 기기들끼리 1 : 1 통신을 하는 것이 아닌 중간 중개자인 MQTT Broker에 PUB / SUB 방식으로 통신을 진행합니다. 예를 들어, 서버가 특정 IoT 기기에게 메세지(신호)를 보내고 싶다면, IoT 기기가 구독하고 있는 토픽에 보낼 메세지를 추가하여 MQTT Broker에 Publish 합니다. 그러면, 해당 토픽을 구독하고 있는 IoT 기기가 해당 토픽을 Subscribe 한 후 메세지를 받습니다. 기본적으로 이러한 형식으로 서로 통신합니다. 결국, MQTT Pub-Sub 기반 IoT 제어 및 응답 흐름은,서버는 IoT 기기가 구독하는 특정 토픽에 요청 메시지를 담아 MQTT Bro..

저희 회사는 IoT 디바이스 간의 통신을 MQTT 프로토콜을 사용해서 처리하고 있습니다. 이 때 사용하는 MQTT Broker는 AWS IoT을 사용하고 있습니다. 이번에 처리할 내용이, 저희가 개발하고 있는 Backend 서버에 이 AWS IoT와의 연동을 처리해야 합니다. 그래서 연동을 처리하는 과정에서 생긴 문제와, AWS IoT Core가 어떤건지, 왜 사용했는지 정리하려고 합니다. MQTT BrokerMQTT Broker는 MQTT 프로토콜을 기반으로 하는 메시지 브로커로, 클라이언트 간의 메시지를 중계하는 서버 역할을 합니다. MQTT Broker에는 여러 종류가 있습니다. 크게 클라우드 기반과 오픈소스 기반의 MQTT Broker를 기준으로 정리하자면,클라우드 기반 MQTT BrokerAWS..

이번에는, JWT에 대해서 공부한 것을 공유해보려고 합니다. 기본적으로 JWT는 Json Web Token의 약자로, 데이터를 외부와 주고 받을 때 인증과 권한 부여을 위해 주로 사용합니다. 이번에 JWT Token을 가지고 이를 포함한 QR Code을 생성하여 처리하는 로직을 구현했는데, 이를 구현하면서 단순히 라이브러리를 통해 JWT을 생성하고, 인증하는 과정을 넘어서 JWT의 목적과, 암호화 기법에 대해 공부하게 되어 이를 공유해보도록 하겠습니다.공유에 앞서, 간단하게 JWT을 한번 정리해보도록 하겠습니다. ※ JWT란JWT(Json Web Token)의 약자로, Json 기반의 토큰을 의미한다.JWT는 클라이언트-서버 통신에서 효율적이고 간단한 인증 수단이다.JWT는 크게 세가지 부분으로 나뉘며..

회사에서 IoT 간의 데이터 통신 시스템을 구축할 필요성이 있다고 해 서버에 적용할 필요가 있었습니다. 현재 IoT 데이터는 MQTT라는 프로토콜을 통해 MQTT Broker(AWS IoT)와 연결되어 통신하고 있으며, 이번에 백엔드 서버까지 해당 브로커에 연결되어 IoT 기기와 통신 시스템 구축이 필요하다고 했고 이 파트를 제가 담당하게 되었습니다. MQTT에 대한 기본적인 이해가 잘 되어야 어떤식으로 환경 및 설정을 처리할지 윤곽이 잡히기 때문에 이번 기회에 한번도 경험하지 못한 MQTT 프로토콜이 뭔지 정리하면서, 백엔드 내부 Config 로직까지 정리해보려고 합니다. ※ MQTT란MQTT(Message Queue Telemetry Transport)는 기계 간 통신에 사용되는 표준 기반 메세지 ..