사람들은 살면서 "아 저거 꼭 해보고 싶었던 건데..." 하면서 후회하는 것이 있을 것이라 생각합니다. 저는 그중 하나가 웹소켓을 이용해 실시간 채팅 서비스를 만들어보는 것이었습니다. 여태 뭐하다가 왜 이제 하냐? 그것은 설날이기 때문이다... (본가에 와서 노트북 뚝딱거리기) 웹소켓을 이용해 실시간 채팅 서비스를 구현하면서 처음 접하는 sockJS, STOMP, 메시지브로커, 브로드캐스팅 등등... 어려운 용어와 개념을 익히는 데 시간이 걸렸기에 블로그에 정리해 놓고 많은 사람들이 쉽게 이 개념을 습득해서 자신의 서비스, 프로젝트에 이용해봤으면 하는 바람에 글을 적어봅니다. 웹소켓이란 무엇일까? 이번의 글의 핵심 주제입니다.많이들 들어봤을 내용은 "웹소켓을 이용해 실시간 채팅 서비스를 ..
회사 업무를 수행하다 보면 현재 개발 중인 서비스에 로그인해서 테스트를 진행하는 경우가 빈번하게 발생한다. 단위 테스트, 통합 테스트를 이용해서 로직의 안정성을 높이는 것도 엄청 중요한 테스트지만 내가 직접 하나하나 버튼을 클릭하면서 눈으로 확인하는 테스트도 중요한 테스트라고 생각한다. (물론 SI 특성상 테스트 코드를 짜는 것 자체가 불가능하다고 생각한다. 거의 주 단위로 바뀌는 요구사항 덕분에...) 그렇게 크롬으로 로그인 계정 하나 만들어서 서비스 접속하고 이것 저것 눌러보고... 다른 계정으로도 동시에 접속하기 위해 시크릿 모드를 열어서 이것 저것 눌러보고.... 또 다른 세션을 이용해야 하는데 크롬은 기본 세션, 시크릿 모드 2개가 끝이라 엣지를 켜서 이것저것 눌러보고... 만약..
오랜만에 사이드 프로젝트를 진행하면서 Docker를 다시 사용했는데 웹서버로 Nginx를 사용하면서 다른 컨테이너로 리버스 프록시를 못하는 문제를 마주하게 되었다. 프로젝트의 통신 흐름은 위 그림처럼 진행이 된다. 1. 사용자가 HTTP 요청을 보냄2. Nginx는 HTTP 요청을 잡아서 스프링부트로 요청을 전달 그러나 위 과정을 진행하면서 생각도 못했던 문제를 마주하게 되었다. 그 문제는 도커 네트워크 불일치 문제로 인해 Nginx가 받은 HTTP 요청을 스프링부트로 못넘기는 문제였다. 도커 컨테이너끼리의 통신은 도커 네트워크를 통해 이루어지게 되는데 통신하려는 두 컨테이너가 같은 네트워크를 사용하고 있지 않아서 발생한 문제이다. 나는 컨테이너를 구축할 때 아래의 방법으로 컨테이너를 구축..
작성하려던 API는 하루 방문자 수를 단순히 COUNT 하는 쿼리였다. /** * 오늘 하루 방문자 수 조회하는 메서드 * */ public long dailyVisitedCount() { LocalDateTime startDate = LocalDate.now().atStartOfDa..
원래 '총균쇠'를 읽으려고 했었는데 하필 동작 도서관에 '총균쇠'가 전부 대출 중인 관계로 페이커의 추천 독서 목록을 살펴봤었다. 그중에 '녹나무의 파수꾼'이라는 책이 있었고 내가 많이 접했었던 '히가시노 게이고'의 소설이라서 가볍게 읽을 겸 이 책을 선택했다. 거대한 녹나무는 전설이 있다. 그 전설은 아는 사람들끼리만 전해져 내려왔고, 해당 녹나무를 지키는 파수꾼이 존재한다. 레이토는 처음에 불운한 상태로 시작하게 되고 감옥(?)까지 들어갔으니 정체불명의 사람으로부터 부탁받은 변호사가 찾아오게 된다. 변호사에게 듣기를 '무죄를 만들어줄테니 정체불명의 사람이 시키는 대로 하겠냐'라는 얘기를 들었다. 수락하면 변호 비용 + 무죄를 만들어 줄 것이고, 거절한다면 이 역경을 혼자 헤쳐나갸야 했다. 더 ..
올해 여름에는 SSAFYnity 컨퍼런스에 참여했었는데 이번에는 도움을 많이 받았던 보초님이 연사로 오시기도 하셨고, AWS 12년 차 클라우드 엔지니어분도 오신다고 하셔서 신청하고 참여하게 되었다. 2024년 11월 30일(토)에 역삼 멀티캠퍼스 18층에서 진행되었다. 나는 다행이도 기존에 알던 사람들과 함께 갔었고 그 안에서도 AWS에 취직했던 다른 형도 만나는 기회가 있었다.(역시 싸피가 이런 네트워킹은 최고다) 생각보다 많은 사람들이 왔어서 놀랐다. 기억상 100명이 넘게 세미나에 참석해 주었다. 나는 1번 보초님 연설과 4번 AWS 엔지니어분의 연설을 듣고자 신청했고 운 좋게 1, 4번으로 순서를 배정받게 되었다. 보초님 강연 늘 보초님 강연을 들을 때마다 드는 생각이지만 항상 ..
개인 프로젝트, 팀 프로젝트에 이어 사내 프로젝트까지 스프링 시큐리티를 담당하며 시큐리티에 대한 이해도가 많이 필요하게 되었다. 특히 시큐리티는 필터 체인을 통해 여러 가지 인증/인가와 관련된 필터를 타게 되는데 해당 필터들의 대한 이해가 동반되지 않으면 스프링 시큐리티를 사용하는 데 있어 많은 어려움을 겪게 된다. 우선 스프링 시큐리티를 활성화하게 되면 아래와 같은 기본적으로 정의된 필터를 타면서 인증/인가 절차를 진행하게 된다. 그 중에 UsernamePasswordAuthenticationFilter라는 것이 6번째 필터로 존재하게 되는데 해당 필터의 존재의 의미와 역할에 대해 알아보려고 한다. 왜 이렇게 익숙한 이름이지? 처음에 UsernamePasswordAuthenticationFil..
제대로 책을 읽자고 마음먹은 날 동작 도서관에서 처음으로 빌린 책이다. 책을 골랐던 기준은 유튜브였다. (아마 기억상 처음 읽기 좋은 책~ 이렇게 검색해서 빌렸던 것으로 기억한다.) 아침, 저녁 지하철 오가면서 짬짬이 하루에 20p ~ 30p씩 독서를 시작했었다. 완독 후 느낀 점을 한 줄로 요약하자면 '너무 무모한 습관들 가지려고 하지 말자. 나에게 맞는 습관을 차근차근 바닥부터 시작해 보자' 좋은 습관을 가진 사람을 항상 우러러보는 경향이 있다. '저 사람은 저렇게 좋은 습관을 매일 유지하는구나, 나도 저렇게 되고 싶다' 이런 생각을 많이 가졌었다. 이번에 독서를 시작한 이유도 위와 같은 이유로 시작했다. 그리고 독서의 습관을 기르기 위해 독서 스터디까지 창설했다. 내가 우러러보는 좋은..