BackEnd (6) 썸네일형 리스트형 MQTT 프로토콜에 대하여 새로 입사한 회사에서 채팅 어플리케이션을 개발하는데, 클라이언트와 서버 사이의 통신을 MQTT 프로토콜을 사용하여 개발하였기에 MQTT에 대한 공부도 해볼겸 블로그에 적습니다:)Socket을 사용한 TCP통신이 일반적이겠지만, 각 회사마다 히스토리와 정책이 있기에 무조건 Socket을 사용하여 통신을 해야만 한다는 조건은 없기에 이번 기회에 MQTT에 대해서도 공부해 볼 수 있는 기회가 주어져서 정말 재밌는것 같습니다 ㅎㅎ MQTT는 M2M(사물통신), IOT를 위한 프로토콜로서, 최소한의 전력과 패킷량으로 통신하는 프로토콜입니다. 따라서 IOT와 모바일 어플리케이션 등의 통신에 매우 적합한 프로토콜입니다. MQTT는 위와 같이 Broker, Pub / Sub 형식으로 이루어져 있으며 이을 활용하여 해당.. RabbitMQ에 대하여 이번 메세지 로그 서버를 구축하면서 Redis의 Pub/Sub 기능을 이용하여 여러 API의 로그들을 저장하는 서버를 Redis 중개 서버를 통하여 구현하였는데, Redis를 사용할 경우 클라이언트 서버 입장에서 로그서버가 계속 Sub상태인지 모를뿐더러 로그 서버가 Sub상태가 아니라면 로그들의 유실을 막을 수 없는 상태가 우려되어, 메세지큐 형식으로 메세지들을 쌓아 둘 수 있는 RabbitMQ로 교체하려고 합니다. 그래서 이번에는 RabbitMQ에 대하여 알아보겠습니다. Core Concept RabbitMQ에서 중요한 개념으로는 Producer, Consumer, Queue, Exchange, Binding이 있습니다. 먼저 Producer는 이름에서 알 수 있듯이, 메세지를 생성하고 발송하는 주체입.. HTTP에 대하여 HTTP (HyperText Transfer Protocol) 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다. 주로 TCP를 사용하고 HTTP/3 부터는 UDP를 사용하며, 80번 포트를 사용한다 (HTTPS는 443포트). 1996년 버전 1.0, 그리고 1999년 1.1이 각각 발표되었다. 웹브라우저의 요청 흐름 웹브라우저는 보통 HTTP 프로토콜을 사용하여 요청을 하게 되는데, 위 그림과 같은 요청 메시지를 생성하여 서버에 요청을 하고 응답 받는 흐름으로 진행 된다. HTTP 요청 메시지를 TCP/IP 패킷으로 감싸, 서버로 요청하게 된다. 서버는 받은 요청.. IP 그리고 TCP UDP에 대하여 인터넷(Internet)의 개념 인터넷(Internet)이란 여러 통신망을 하나로 연결한다는 의미의 ‘인터 네트워크(inter-network)’라는 말에서 시작되었으며, 이제는 전 세계 컴퓨터들을 하나로 연결하는 거대한 컴퓨터 통신망을 의미합니다. 이러한 인터넷은 클라이언트와 서버로 구성되며, TCP/IP라는 기본 프로토콜을 통해 제공되고 있습니다. 클라이언트에서 서버로 메세지를 보내려면 인터넷을 통해서 보내게 되는데, 이 때 인터넷의 노드를 통해 해당 서버에 보내지게 됩니다. 그렇다면, 클라이언트는 서버가 어떤 주소에 있는 어떤 서버인지 어떻게 알 수 있을까?? 이때 사용하는것이 IP(internet protocol)입니다. IP 역할 지정한 IP주소에 데이터 전달 패킷(Packet)이라는 통신 단위로.. Node.js에 대하여 Node.js란? 자바스크립트를 활용하며, 논블로킹(Non-blocking)I/O와 싱글 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있으며, 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능한게 특징이다. 2022년 4월 19일을 예정으로 18버전 출시 예정. Node.js 공식사이트에서 내린 Node.js의 정의 Node.js는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임입니다. Node.js는 이벤트 기반, 논블로킹(Non-blocking)I/O 모델을 사용해 가볍고 효율적 입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다. Node.. 스택과 큐, 그리고 힙에 대하여 스택 스택의 개념 스택이란 컴퓨터의 기본적인 자료 구조의 한가지로 쌓아 올린다는 것을 의미 합니다. 따라서 스택 자료구조란 책을 한권 한권 위로 쌓아 올린 형태의 자료 구조를 말합니다. 스택은 쌓아 올려진 맨 위의 것부터 빼거나 새로 넣을 수 있는 선형 구조(LIFO - Last In First Out)로 되어 있습니다. 이 때 자료를 넣는 것을 '밀어 넣는다'란 의미로 'Push' 라 하고 반대로 자료를 꺼내는 것을 'Pop'이라고 하는데, 꺼낼 때는 가장 최근에 Push한 자료부터 나오게 됩니다. 자바스크립트 예시 const stack = []; stack.push(1); stack.push(2); stack.push(3); stack[stack.length - 1]; // peek 3 stack.p.. 이전 1 다음