전체 글 썸네일형 리스트형 SSE(Server Sent Event) 개념 정리 들어가면서.. 이번 글에서는 SSE(Server Sent Event) 개념을 정리한다. SSE(Server Sent Event) SSE는 서버에서 클라이언트에게 실시간으로 데이터를 전송하는 기술이다. 기본 컨셉은 HTTP connection을 길게 유지하면서, 서버에서 클라이언트에게 데이터를 전송한다. 아래 그림을 보면 이해하기 쉽다. SSE가 나오게된 배경 SSE는 서버에서 데이터 변경이 있을때 클라이언트에게 실시간으로 알려주기 위해 주로 사용된다. SSE 기술이 등장하기 전에는 Client에서 서버의 데이터 변경을 확인하기 위해 주로 polling 방식을 사용했다. Short Polling 클라이언트에서 주기적으로 API를 호출해 서버의 데이터 변경사항을 확인하는 기법이다. 플로우는 아래 그림과 같다.. 더보기 테스트의 Spring Container와 운영 환경의 Spring Container가 다르다..? 들어가면서 이번 글에서는 개발하면서 만난 이슈를 해결해 가는 과정을 공유하겠다. Issue 서버 상태를 확인해주는 HealthCheck API를 만들었다. 이 때 ServletWebServerApplicationContext를 이용해 서버 포트 번호를 확인했다. @RestController @RequestMapping("/health") class HealthCheckController( private val webServerAppCtxt: ServletWebServerApplicationContext, ) { @GetMapping("/info") fun serverInfo(request: HttpServletRequest) = mapOf( "IPAdress" to request.getHeader("X-.. 더보기 HTTPS 적용 방법과 동작원리 들어가면서 인터넷을 통해 다른 서비스를 사용해 봤거나, 개인 프로젝트로 웹 서비스를 개발해본 분들은 HTTPS에 대해 들어본 적 있을 것이다. 이번 글에서는 HTTPS를 적용해야하는 이유, 적용 방법 그리고 동작 원리를 정리하겠다. HTTPS 필요한 이유 HTTPS를 사용해야하는 이유는 크게 3가지 존재한다. (물론 더 있을 수도 있다.) 1. 보안 HTTPS를 사용하면 사용자와 서버간 통신이 암호화돼 제 3자(해커)가 통신 내용을 알 수 없다. 덕분에 사용자에게 신뢰성을 줄 수 있다. 2. 마케팅 마케팅 관점에서 내 서비스가 검색 엔진에 자주 노출되는게 유리하다. 실제로 구글 검색 엔진은 HTTPS가 적용된 사이트에 적용 안된 사이트 보다 더 높은 우선선위를 부여한다. (구글 문서) 3. 기술 선택 H.. 더보기 Spring Data Redis Pub/Sub 파헤치기 들어가면서 Pub/Sub을 지원하는 도구라 하면 보통 RabbitMQ, Apache ActiveMQ, Amazon SQS 와 Apache Kafka를 생각할 것이다. 하지만 Redis도 NoSQL 기능에 더해 Pub/Sub을 지원한다. 이번 글에서는 Redis Pub/Sub과 Spring Data Redis가 어떻게 Redis Pub/Sub을 지원하는지 알아보겠다. 목차 1. Redis Pub/Sub 2. Spring Data Redis로 Redis Pub/Sub 사용하기 3. Spring Data Redis 코드 파헤치기 Redis Pub/Sub Redis의 Pub/Sub 지원은 일반적인 Pub/Sub 기술들과 유사하다. 1. 구독자는 토픽을 구독한다. 2. 토픽에 메시지가 발행될때 메시지가 구독자들에.. 더보기 Spring's STOMP support 파헤치기 들어가면서 실시간 채팅 서비스와 같이 클라이언트와 서버 간 양방향 소통이 필요한 서비스는 어떤 기술을 사용해 개발할까? 가장 많이 사용되는 기술은 WebSocket이다. WebSocket을 사용하면 HTTP보다 효율적으로 데이터를 주고받을 수 있다. 따라서 Spring의 WebSocket 지원 기능을 활용해 실시간 채팅 서비스를 개발할 수 있다. 하지만 WebSocket을 직접 이용해 채팅 서비스를 만들기 위해서는 번거로운 작업이 필요하다. 그리고 Spring에서도 WebSocket을 직접 이용하는 게 아니라, 상위 프로토콜을 사용하는 걸 권장한다. As explained in the introduction, direct use of a WebSocket API is too low level for ap.. 더보기 WebSocket과 친해지기 들어가면서 서버와 실시간으로 데이터를 주고받는 서비스를 개발하는 데 필요한 WebSocket! 이번 글을 통해 WebSocket 개념을 정리하겠다. WebSocket WebSocket은 뭘까? RFC 6455에 따르면 다음과 같이 나와 있다. The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security model comm.. 더보기 Spring Websocket Trobleshooting!! (feat. Decorator Pattern) 글을 쓰게된 배경 Spring Websocket을 공부하기 위해 간단한 채팅서버를 만들기로 결정했다. 처음에 생각했던 것과 다르게 직접 찾아보니, 너무나 쉽게 채팅서버를 만들 수 있었다. (물론 간단한 채팅서버다.) 채팅서버를 만드는 과정은 Spring 공식 문서와 블로그 글들을 참고했다. 만드는 과정은 간단했지만, 채팅서버가 내가 원하는대로 동작하지 않았다. 문제를 해결하기 위해 공식 문서와 코드를 참고했고, 원인을 찾아 문제를 해결했다. 이 과정에서 배운점들을 기록하고 공유하고 싶어 글로 남기게 됐다. 만난 문제 Spring 공식문서를 참고하면 정말 몇 줄 안되는 코드로 간단한 채팅서버를 만들 수 있다. 추가로 블로그 글도 많은 도움이 되었다. 위 링크의 내용을 간략하게 요약하면 다음과 같다. 1. .. 더보기 좋은 Software Engineer가 되기 위한 태도 최근에 더 좋은 Software Engineer가 되려면 어떻게 해야 할까 고민이 많아졌다. 그러다 우연히 좋은 글을 발견했다. 이를 기록하고 공유하고 싶어 글을 쓰게 되었다. 이 글은 원본 글을 한국어로 해석하고 마지막에 내 의견을 덧붙인 글이다. 나와 비슷한 고민을 하시는 분들께 조금이라도 도움이 됐으면 좋겠다. 원문 : https://www.linkedin.com/pulse/16-things-practice-become-better-software-architect-ahad-khan-csm/ 16 things to practice to become a better software architect Dear Curious Learners, Richard Monson-Haefel famously quo.. 더보기 이전 1 2 3 4 5 다음