본문 바로가기
728x90

넓고 얕은 웹 지식15

직접 만들어 보면서 이해하는 웹소켓 (3) - STOMP 실시간 채팅방 구현(프론트엔드 영역) 지난 글에 이어 STOMP에 대해 간단히 알아보고, 이제는 소켓 통신에 대한 실습을 넘어 간단하게 실시간 채팅 웹사이트를 구현해 보겠다. 📌 WebSocket의 한계와 STOMP의 등장 배경WebSocket은 실시간 통신을 위한 효율적인 기술이지만, 사용상 몇 가지 한계가 있다🥲 프로토콜 수준의 메시지 패턴 부재저수준의 프로토콜로 단순한 메시지 전송 기능만 제공한다.따라서 복잡한 메시징 패턴이나 메시지 형식을 개발자가 직접 설계하고 구현해야 한다.🥲 메시지 라우팅의 어려움클라이언트에서 서버로 메시지를 전송할 때 해당 메시지를 어떻게 처리할 것인지, 어느 클라이언트에게 전달할 것인지에 대한 라우팅 로직 역시 개발자가 직접 구현해야 한다.🥲 표준화된 메시징 기능의 부재메시지 교환에 대한 고급 기능(예.. 2024. 5. 23.
직접 만들어 보면서 이해하는 웹소켓 (2) - 크롬 확장프로그램을 이용하여 실시간 채팅방 구현하기 지난 글에 이어 채팅방을 구현해 보자.프론트엔드 영역은 웹소켓 공부에 포커싱 하고자 웹소켓 확장 프로그램으로 대신했다. 👨🏻‍🔬 실습 진행🛠️ 확장 프로그램 설치 - WebSocket King Client구글 크롬의 확장 프로그램에 WebSocket이라고 검색하면 웹소켓에 관련된 여러 테스팅 & 디버깅 툴이 나온다.링크 들어가기그중에 현재 기준 가장 인기 있는 툴을 사용했다.WebSocket king is a tool designed to assist in developing and debugging WebSocket connections.툴의 개요를 보면 웹소켓 연결에 대한 개발과 디버딩을 도와주는 툴이라고 적혀있다.프로그램 설치 후 들어가 보면 위와 같은 화면이 나온다. ☘️ 스프링부트 프로젝.. 2024. 5. 12.
직접 만들어 보면서 이해하는 웹소켓 (1) - 왜 웹소켓(WebSocket)인가? 💡 왜 웹소켓(WebSocket)인가? 포털 사이트의 실시간 검색 순위, 주식이나 코인 거래소의 실시간 차트 정보, 음악 사이트의 실시간 음원 순위 등 웹 기반의 애플리케이션에서 실시간 정보 공유는 사용자 경험을 대폭 향상할 수 있는 중요한 요소이다. 그러나 전통적인 HTTP 통신 방식은 이러한 실시간 정보 공유에 몇 가지 제약이 있다. 이 글에서는 실시간 통신에 있어 기존 HTTP 통신 방식의 문제점에 대해 알아보고 이를 해결할 수 있는 몇 가지 방법을 논의한 후 왜 웹소켓이 실시간 통신에 있어 가장 우수한 선택인지를 직접 구현해 봄으로써 이해하려고 한다.🥲 실시간 통신에서 HTTP의 한계HTTP 통신은 클라이언트가 서버에 요청을 보내고, 서버가 그 요청에 대한 응답을 보내는 요청-응답(Reque.. 2024. 5. 10.
로컬에서 도커로 nginx 설치 & 스프링 부트의 프록시 서버 테스트 해보기 📌 도커로 nginx 설치하기 wonyonghwang@Wonyongs-MacBook-Pro ~ % docker run -d --name nginx -p 8081:80 nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 578acb154839: Pull complete e398db710407: Pull complete 85c41ebe6d66: Pull complete 7170a263b582: Pull complete 8f28d06e2e2e: Pull complete 6f837de2f887: Pull complete c1dfc7e1671e: Pull complete Digest: sha256:86e53c4c1.. 2023. 11. 14.
HTTPS 통신 흐름을 이해하고 NginX에 SSL/TLS를 적용해보자 💡 시작 전에 일단 SSL이 무엇이고 어떤 과정으로 http의 보안 문제가 해결되는지 알아보자. 이 글을 이해하기 위해서는 대칭키, 비대칭키의 개념과 http, https에 대한 기본적인 지식을 가지고 있어야 한다. SSL/TLS에 대하여 SSL은 Secure Sockets Layer로 웹 서버를 인증할 때 사용하는 표준 보안 기술이다. 서버와 클라이언트(브라우저) 간의 통신에서 http는 패킷을 암호화하지 않기 때문에 전송되는 패킷 정보가 외부에 그대로 노출이 된다. 이는 보안에 심각한 허점을 만들어낸다. 따라서 ssl을 이용해 패킷을 암호화하여 도중에 패킷을 갈취당해도 정보의 내용을 보호할 수 있게 하는 것이다. TLS는 SSL의 업데이트 버전이며 SSL v4.0이 아니라 TLS v1.0으로 바뀐 것.. 2023. 5. 17.
Apache와 NginX 비교 및 차이점 Apache HTTP Server 주요 특징 구조 Apache 스레드 / 프로세스 기반 구조 하나의 프로세스가 하나의 요청을 처리하는 데 사용되는데 높은 트래픽 조건에서 리소스를 많이 사용하기 위함이다. 사용자가 많아지면 스레드 생성, 메모리 및 CPU 낭비 심하다. 모듈식 디자인으로 유연성이 좋아 다양한 모듈을 사용하여 기능을 확장할 수 있다. NginX Event-Driven 처리 기반 구조 이벤트 중심의 비동기 아키텍처를 따른다. 한 개 또는 고정된 프로세스만 생성하여 여러 개의 커넥션을 이벤트 핸들러를 통해 비동기 방식으로 처리한다. 적은 양의 스레드만 사용되기 때문에 Context Swiching 비용이 적고 CPU 소모가 적다. 여러 연결을 동시에 처리할 수 있는 정교한 아키텍처를 가지고 있어.. 2023. 5. 15.
Apache Tomcat에 대해 쉽고 빠르게 정리하기(with. httpd) 아파치(Apache HTTP Server) 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만드는 웹 서버 프로그램이다. 전 세계에서 가장 인기 있는 웹 서버 중 하나이다. 80번 포트를 사용한다. 기능적으로 우수하고 구축이 쉽다는 장점이 있다. 아파치 톰캣(Apache Tomcat) 아파치 소프트웨어 재단의 오픈소스 웹 애플리케이션 서버이다. DB 연결, 비즈니스 로직 수행, 다른 응용 프로그램과의 상호작용 등의 동적 기능을 사용할 수 있다. Spring boot의 내장 서버이므로 Spring Boot를 사용한다면 별도의 설치 과정이 필요 없이 자연스레 사용했을 것이다. 자바 애플리케이션을 위한 대표적인 오픈소스 웹 애플리케이션 서버이다. JAVA EE 기반으로 만들어졌고 Servlet을 구동하.. 2023. 5. 15.
NGINX 설치 및 간단히 알아보기 NGINX 러시아에서 개발된 오픈소스 웹 서버 소프트웨어로 가벼우면서도 높은 성능을 자랑한다. Tomcat, Jetty 등이 웹 애플리케이션 서버(자바 서블릿 컨테이너)라면 NGINX는 웹 서버이다. 비동기 이벤트 기반으로 트래픽이 많은 웹사이트의 서버가 연결을 효율적으로 처리할 수 있도록 도와준다. 클라이언트로부터 받은 요청에 대한 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 한다. WAS의 부하를 줄일 수 있는 로드밸런서 역할을 하는 Reverse Proxy Server로 활용되기도 한다. 클라이언트와 서버 사이에 배치해서 무중단 배포를 할 수 있다. NGINX 설치 brew install nginx NGINX 실행 brew services start nginx 터미널 화면 실행 .. 2023. 5. 12.
728x90