본문 바로가기

항해 99/Spring

(49)
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 알고리즘과 비슷하게 나중에 요청올 결과를 미리 저장해두었다가 빠르게 서비스해주는 것을 의미함. 즉, 미리 결..
MapStruct MapStruct Java bean 유형 간의 매핑 구현을 단순화하는 코드 생성기 특징 컴파일 시점에 코드를 생성하여 런타임에서 안정성을 보장함 다른 매핑 라이브러리보다 속도가 빠릅니다 반복되는 객체 매핑에서 발생할 수 잇는 오류를 줄일 수 있으며, 구현 코드를 자동으로 만들어주기 때문에 사용이 쉬움 Annotation processor를 이용하여 객체 간 매핑을 자동으로 제공함 다만, Lombok 라이브러리에 먼저 dependency(의존성) 추가가 되어있어야 함, MapStruct는 Lombok의 getter, setter, builder를 이용하여 생성되므로 Lombok보다 먼저 의존성이 선언된 경우 실행할 수 없음 MapStruct 사용 방법 1. 기본 사용방법 MapStruct를 사용하기 위해서..
대댓글 기능 구현 필요 사항 댓글 저장 시 필요한 내용 제목(타이틀) 댓글 내용 부모 댓글 ID(부모 댓글이 없을 경우 - 최상위 댓글 Null) 작성자 ID(유저 ID) 게시글 ID 댓글 삭제 시 필요한 내용 댓글 ID 부모 댓글 ID(대댓글 일 경우에) 자식 댓글이 있다면 삭제 상태만 변경(부모 댓글 내용을 "삭제된 댓글입니다." 등으로 표시) 삭제 상태인 부모 댓글은 속해 있는 자식 댓글이 없을 경우 삭제(부모 댓글 삭제 상태가 True이고 해당 부모 댓글에 속한 자식 댓글이 모두 삭제 되면 부모 댓글도 DB에서 삭제) 댓글에 대한 대댓글 기능 구현 시 설계 접근 방식 1. 자기 참조를 사용한 엔티티 설계 댓글 엔티티를 자기 자신을 참조하도록 설계하여, 각 댓글이 부모 댓글을 가리킬 수 있도록 합니다. 이 방식은 하..
S3를 이용한 파일 업로드 AWS S3 AWS Simple Storeage Service의 줄임말로 파일 서버의 역할을 하는 서비스 프로젝트 개발 중 파일을 저장하고 불러오는 작업이 필요한 경우에 프로젝트 내부 폴더에 저장할 수 있지만, AWS S3를 사용하여 파일을 관리할 수도 있음 AWS S3의 장점 무제한 용량(하나의 파일에 대한 용량 제한은 있지만, 전체 용량은 무제한) 파일 저장에 최적화 (개발자가 따로 용량을 추가하거나 성능을 높이는 작업을 하지 않아도 됨) 99.999%라는 높은 내구도(파일이 유실될 가능성이 낮음) 이 외에도 저렴한 비용, 높은 객체 가용성, 뛰어난 보안성 등의 장점이 있음 AWS S3 생성 객체(Object) : 파일과 파일정보로 구성된 저장단위로 파일이라 생각하면 됨 버킷(Bucket) : 저장된..
CORS 에러 해결 방법, CORS 보안 취약점 예방 가이드 1. Chrome 확장 프로그램 이용 Chrome에서는 CORS 문제를 해결하기 위한 확장 프로그램을 제공해준다. 링크에서 'Allow CORS: Access-Control-Allow-Origin' 크롬 확장 프로그램을 설치 해준다. 브라우저 오른쪽 상단에서 확장 프로그램을 활성화 시킬 수 있다, 해당 프로그램을 활성화 시키게 되면, 로컬(localhost) 환경에서 API를 테스트 시, CORS 문제를 해결할 수 있음 2. 프록시 사이트 이용하기 프록시(Proxy)란 클라이언트와 서버 사이의 중계 대리점을 뜻함, 프론트에서 직접 서버에 리소스를 요청했더니 서버에서 따로 설정을 안해줘서 CORS 에러가 뜨면, 모든 출처를 허용한 서버 대리점을 통해 요청하면 되는 것 무료 프록시 서버 대여 서비스들은 모두..
CORS CORS(Cross-Origin Resource Sharing) 교차 출저 리소스 공유 정책, 교차 출처라는 것은 (엇갈린) 다른 출처를 의미 출처(Origin) 어떤 사이트를 접속할 때 인터넷 주소창에 URL이라는 문자열을 통해 접근, URL은 다음과 같은 구성 요소로 이루어짐 Protocol(Schema) : http, https Host : 사이트 도메인 Port : 포트 번호 Path : 사이트 내부 경로 Query string : 요청의 key와 value값 Fragment : 해시 태그 출처(Origin)라는 것은 Protocol과 Host 그리고 Port까지 모두 합친 URL을 의미함 동일 출처 정책(SOP, Same-Origin Policy) SOP 정책은 동일한 출처에 대한 정책을 말함,..
AWS로 HTTPS 연결 EC2로 HTTPS 연결 개요 HTTPS는 SSL이라는 보안 프로토콜 위에서 HTTP 통신을 하는 프로토콜을 뜻함(최근에는 발전된 TLS 사용). 사전 필요사항 EC2 인스턴스 개설 실행 가능한 웹 서버 도메인 구매 특정 IP에 부여된 naver.com, google.com과 같은 주소들을 도메인이라고 하며, https 연결을 위해서는 도메인 주소를 소유하고 있어야 한다. '가비아' 1. 가비아에 접속 2. 사용을 원하는 도메인 명을 검색 3. 도메인 별 1년 가격이 나옴(Event 가격은 최초 1년만 적용됨), 기간이 지나고 연장하지 않을 경우 자동으로 삭제 됨 4. 등록 기간 설정 후 필수 정보 입력 후 결제 5. My가비아 → 이용 중인 서비스 → 도메인 메뉴에서 구입한 도메인 확인 가능 Route..