공부방
-
RabbitMQ 와 Kafka공부방 2024. 7. 12. 22:16
메시지 브로커개인 프로젝트를 진행하던 중, 이메일을 보내는 기능을 구현하고자했다.시스템 구성은 API 서버가 있고 이 서버에서 메일을 보내고자할경우 별도의 Mail 서버로 요청을 보내 메일을 보내는것이다. 간단하게 API 서버에서 Mail 서버로 HTTP를 사용해 API 요청을 보내 처리해도 되지만 이럴경우 두 서버간의 요청이 동기적으로 처리되어버린다.메일을 보내는 기능 자체는 사용자의 요청에 즉각적으로 처리가 될 필요 없는 기능이다. 이 때문에 나는 비동기적으로 처리하는 방법으로 구조를 잡았다. 메시지 브로커를 이용하여 메일 서버와 통신하는것이다. 이렇게되면 API 서버는 메일을 보내는 요청을 메시지 브로커에 던지면 끝이다. 그 뒤는 메일서버가 처리할 영역으로 두 서버의 역할이 확실히 분리된다.메시지 ..
-
Proxy 와 Reverse Proxy공부방 2024. 6. 18. 23:49
Proxy Server프록시 서버(영어: proxy server, 문화어: 대리봉사기)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. - wikipedia Proxy 는 영어로는 '대리' 라는 뜻으로 말 그대로 어떤 행위를 대신 해준다는 의미이다. 이런 Proxy 서버의 역할은 서버와 서버 사이에서 중개인 역할을 한다고 생각하면 된다. 이때 프록시 서버의 위치에따라 (Forward)Proxy 와 Reverse Proxy 로 구분한다. 클라이언트와 인터넷 사이에 있는 프록시를 Forward Proxy, 인터넷과 서버 사이에 있는 Proxy를 Reverse Proxy 라고 한다. Forward Proxy우리가 흔히 그냥..
-
JPA 1대다 fetch join 주의사항공부방 2024. 4. 2. 01:34
더보기 김영한님의 JPA 강의를 보다가 1대다 fetch join 시 주의해야할 사항이 있고 어떤식으로 처리하는지 정리해두면 나중에 보기 좋을것 같아 정리 도메인 사용 쿼리 public List findAllWithItem() { return em.createQuery( "select distinct o from Order o" + " join fetch o.member m" + " join fetch o.delivery d" + " join fetch o.orderItems oi" + " join fetch oi.item i", Order.class) .getResultList(); } 문제 사항 기본적으로 쿼리에 distinct 가 들어간 이유는 Order 와 OrderItem 이 일대다 관계이기때문..
-
ElasticSearch 정리공부방 2023. 12. 25. 22:42
ElasticSearch 란? 1. 검색엔진 엘라스틱서치는 이름 그대로 검색 엔진입니다. 다른 RDBMS 또는 NoSQL에 비해 매우 강력한 검색 기능을 지원합니다. 역색인을 사용하여 검색 속도가 굉장히 빠르고 다양한 애널라이저를 조합하여 여러 비즈니스 요구사항에 맞는 색인을 구성할 수 있습니다. 2. 분산처리 엘라스틱서치는 분산 처리를 고려하여 설계되었습니다. 데이터를 여러 노드에 분산 저장하고 이 때문에 수평적 확장성이 좋고 고가용성을 제공할 수 있습니다. 3. JSON 기반 엘라스틱서치는 문서를 JSON 형태로 저장하고 관리합니다. 요청 역시 JSON 기반으로 받기 때문에 환경에 구애받지 않고 HTTP를 통해 쉽게 이용할 수 있습니다. 4. 트랜잭션이 지원되지 않음 엘라스틱서치는 RDBMS와 다르게..
-
파이프라인 프로토콜공부방 2023. 11. 22. 23:24
Pipeline Protocol 기존 전송후 대기(Stop and wait) 프로토콜 같은 경우는 한번에 하나의 패킷만 보내고 ACK를 받을때까지 대기하게되면서 비효율적인 측면이 있었다. 이를 보완한 Pipeline Protocol은 정해진 크기만큼 패킷을 한번에 여러개를 보내는 방식이다. 이런 Pipeline Protocol의 대표적인 두가지 방법으로는 Go-Back-N 방식과 Selective repeat 방식이 있다. Go-Back-N 송신자는 윈도우 크기만큼의 패킷을 한번에 보낼 수 있다. 수신자는 패킷을 받으면 ACK 신호를 보낸다. ACK를 받으면 윈도우가 이동하여 다음 패킷을 보낼 수 있게된다. Go Back N 에서는 ACK(n) 의 의미는 n번째 패킷 까지 정상적으로 받았다 라는 의미이다..
-
HTTPS 통신 과정공부방 2023. 11. 15. 22:31
HTTPS HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure)는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다 기존 HTTP 통신에서 사용되는 일반 텍스트를 SSL 또는 TLS 를 이용하여 암호화 하여 데이터의 보호를 보장한다. TLS/SSL Handshake 공개키 방식으로 대칭키를 생성할 키 정보를 교환하고, 대칭키를 생성하여 메시지는 대칭키 방식으로 암호화하여 주고 받는다. 1. Client Hello 브라우저에서 지원하는 암호화 알고리즘 (Cipher Suites)과 TLS 버전, 난수를 생성하여 전달한다. 2. Server Hello Client..
-
OSI 7계층과 TCP/IP 4계층공부방 2023. 11. 7. 22:56
OSI 7계층 osi 7 계층은 1984년 ISO(국제표준화기구) 에서 정의한 것으로, 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 상호 작동하는 방식을 정해 놓은 것이다. 1계층 - 물리 계층(Physical Layer) PDU : Bit Protocol : 10BASE-T 등 디바이스: 허브, 리피터 OSI 7계층 중 가장 아래에 있는 계층으로 물리적인 매체이다. 0과 1로 이루어진 비트 데이터로 통신을 하며 전기적 신호 On, Off로 이루어져 있다. 실제 데이터가 어떤것이 있는지는 알지 못하고 단순히 전기적 데이터를 통신할 뿐이다. 2계층 - 데이터링크 계층(DataLink Layer) PDU : Frame Protocl : Ethernet 등 디바이스 : 브릿지, 스위치 물리계층..
-
Session과 Token공부방 2023. 10. 20. 17:10
인증과 인가 인증과 인가는 비슷해 보이는 단어이지만 그 의미가 다르다. 먼저 인증(Authentication)은 쉽게 로그인이라고 생각하면 된다. 아이디와 비밀번호를 통해 내가 사용자임을 인증받는다. 인가(Authorization)는 인증을 받은 후, 내가 로그인 되어있음을 알아보고 내 친구목록 보기, 댓글 달기 등을 허가해주는 것을 말한다. Session과 Token 세션과 토큰 모두 인가와 관련된 기술이다. 서버에서 요청한 사용자가 로그인 해 있다는 사실을 인지하기 위한 기술이다. Session 세션의 경우 서버에서 별도의 세션 저장소에 유저 정보를 저장하고 있는 것이다. 사용자가 로그인 할 경우 세션을 생성하여 저장하고 해당 세션의 ID를 쿠키로 주고 받아 해당 유저 정보를 알아오는 방식이다. 세션..