본문 바로가기

항해 99

(151)
WIL-8 Fact : 이번주 있었던 일, 내가 한 일 월 : 클론 코딩 프로젝트 발표 및 회고 화 : 최종 프로젝트 발제, 팀 SA 작성, 프로젝트 주제 선정 수 : 웹 게임 프로젝트 기획 목 : WebSocket 학습, ERD, API 설계 금 : WebSocket 학습, 백엔드 깃 컨벤션, 코드 컨벤션 확립 토 : WebSocket 학습, 1주차 멘토링 Feeling : 나의 감정적인 반응, 느낌 최종 프로젝트라 잘 해낼 수 있을지 불안하고 긴장됨 내가 만든 프로그램을 유저에게 직접 테스트 받을 수 있어서 기대 됨 Finding : 그 상황으로부터 내가 배운 것, 얻은 것 하나의 기술을 구현하기 위한 기술 스택의 종류와 기술 스택을 정하기 위한 의사결정에 대해 배웠음 WebSocket에 대해 배움 Future..
WebSocket - STOMP 2 Annotated Controllers 애플리케이션은 클라이언트로부터 받은 메시지를 처리하기 위해 @Controller 클래스를 사용할 수 있음 이러한 컨트롤러는 @MessageMapping, @SubscirbeMapping, @ExceptionHandler 메서드를 선언할 수 있음 @MessageMapping @MessageMapping 메서드는 지정한 경로를 기반으로 메시지를 라우팅할 수 있음, 메서드뿐만 아니라 타입 레벨, 클래스에도 설정할 수 있는데, 이는 컨트롤러 안에서 공통된 경로를 제공하기 위해서 사용된다 기본적으로 매핑은 Any-Style Path 패턴으로 구성하고, Template 변수도 지원한다(ex, /something*, /somethig/{id}) Template 변수는 @Dest..
WebSocket - STOMP 1 STOMP ? STOMP는 Simple Text Oriented Messaging Protocol의 약자로 TCP 또는 WebSocket 같은 양방향 네트워크 프로토콜 기반으로 동작한다 STOMP는 텍스트 지향 프로토콜이지만 Message Payload에는 Text 또는 Binary 데이터를 포함할 수 있음 COMMAND header1:value1 header2:value2 Body^@ STOMP Protocol Specification, Version 1.2 클라이언트는 Message 전송을 위해 SEND, SUBSCRIBE, COMMAND를 사용할 수 있음 또, SEND, SUBSCRIBE, COMMAND 요청 Frame에는 메시지가 무엇기고 누가 받아서 처리할지에 대한 Header 정보를 함께 포함..
WebSocket - SockJS SockJS 란? SockJS의 목표는 애플리케이션이 우선적으로 WebSocket API를 사용하도록 하지만, 사용할 수 없는 경우에는 런타임 시점에 코드 변경없이 WebSocket 이외의 대안으로 대체하도록 하는 것 특징 SockJS는 브라우저에서 사용하도록 설계가 되었기 때문에, 다양한 브라우저와 버전을 지원하고 있음 SockJS는 WebSocket, HTTP Streaming, HTTP Long Polling 등의 크게 세 가지 전송 방법(Transports)을 지원하고 있는데, 이 외에도 다양한 방식을 제공함 WebSocket Emulation 과정 SockJS는 서버로부터 기본 정보를 획득하기 위해서 GET / info 요청을 보내며 시작함 클라이언트가 서버에게 GET / info 요청을 보냄으..
WebSocket - 기본 websocket Web Socket WebScoket 소개 WebSocket 프로토콜은 표준된 방법으로 서버-클라이언트 간에 단일 TCP 커넥션을 이용해 양방향 통신을 제공함 특징 기존의 다른 TCP 기반의 프로토콜과 다르게, WebSocket은 HTTP 요청 기반으로 Handshake 과정을 거쳐 커넥션을 생성함 초기 WebSocket Handshake 요청은 추가적인 방화벽 설정 없이 80, 443 포트틀 사용하여 양방향 통신이 가능 HTTP 규격 그대로 유지할 수 있기 때문에 HTTP 인증, CORS 등을 동일하게 적용할 수 있다는 장점이 있음 커넥션 Flow WebSocket은 커넥션을 맺기 위해 HTTP 요청을 보내는데, 아래와 같이 HTTP 요청 헤더에 Upgrade 헤더와 Connection 포함함 # Up..
Redis Redis란? dictionary 구조(key-value) 형태로 데이터를 저장하고 관리하는 서버 핵심 기능 Redis는 데이터베이스, 캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 오픈 소스(BSD 라이선스), 인메모리 데이터 구조 저장소 문자열, 해시, 목록, 집합, 범위 쿼리가 있는 정렬된 집합, 비트맵, 하이퍼로그 로그, 지리 공간 인덱스 및 스트림과 같은 컬렉션을 제공 복제, Lua 스크립팅, LRU 축출, 트랜잭션 및 다양한 수준의 디스크 지속성이 내정되어 있으면 다음을 통해 고가용성을 제공 Sentinel 및 Redis 클러스터를 통한 자동 파티셔닝을 제공 캐시(Cache) DP 알고리즘과 비슷하게 나중에 요청올 결과를 미리 저장해두었다가 빠르게 서비스해주는 것을 의미함. 즉, 미리 결..
WIL-7 Fact : 이번주 있었던 일, 내가 한 일 월 : 팀프로젝트 발표 및 회고, AWS HTTPS 배포 화 : 클론 코딩 프로젝트 SA, API 명세, 팀 Git Convention, Code Convention 작성 수 : 커뮤니티 게시판 CRUD 구현 및 단위 테스트 실시 목 : 게시판 댓글 기능 구현 및 단위 테스트 실시 금 : 게시판 및 댓글 QueryDSL 리팩토링, 대댓글 기능 구현 및 테스트 토 : WebSocket 활용 유저 채팅 기능 구현 시도 Feeling : 나의 감정적인 반응, 느낌 실제 완성된 웹 사이트를 클론 코딩을 통해 비슷하게 개발하는 것이 재미있으면서도 다양한 기술이 필요해 어렵기도 했음 Scope와 MVP를 명확하게 정해서 개발을 진행하니 그렇지 않았을 때보다 훨씬 수월하게..
MapStruct MapStruct Java bean 유형 간의 매핑 구현을 단순화하는 코드 생성기 특징 컴파일 시점에 코드를 생성하여 런타임에서 안정성을 보장함 다른 매핑 라이브러리보다 속도가 빠릅니다 반복되는 객체 매핑에서 발생할 수 잇는 오류를 줄일 수 있으며, 구현 코드를 자동으로 만들어주기 때문에 사용이 쉬움 Annotation processor를 이용하여 객체 간 매핑을 자동으로 제공함 다만, Lombok 라이브러리에 먼저 dependency(의존성) 추가가 되어있어야 함, MapStruct는 Lombok의 getter, setter, builder를 이용하여 생성되므로 Lombok보다 먼저 의존성이 선언된 경우 실행할 수 없음 MapStruct 사용 방법 1. 기본 사용방법 MapStruct를 사용하기 위해서..