Related Issues
웹
: 브라우저로 통신하여 데이터를 주고받을 수 있는 플랫폼
종류 - http, websocket
HTTP의 특징
: (req, res가 있는것 )요청이 들어와서 응답을 할 수 있는 것 , socket없음
server의 종류 - http, telnet , ssh, ftp
socket : server와 client를 연결한다 , (종류 : connection )
websocket server
- web서버에서 client에서 온 요청이 없어도 응답을 줄 수 있도록 만들어진 것.
A가 이벤트가 발생했을 때 소켓 서버에 전달하여 B에게 전달한다.
=> 추가 설명은 향후 요청
* 모바일 푸시 발송 방법
1. Service 에서 google/apple 스펙에 맞춰 데이터를 에 발송하면
- 1.5 > 다른 서비스를 이용하여 서비스의 메시지를 2의 회사 에서 필요로 하는 약식에 맞춰 데이터를 전달한다. (예 : firebase -FCM)
2. google(GCM)/apple에서 기기에 메시지를 발송한다.
3. 기기에서 메시지를 받아 UI를 적용한다
1과 2 사이의 firebase -FCM이라는 서비스를 이용하여 스펙에 맞춰 메시지를 보내준다.
*
MQ (Message Que) 서버
- MQ : 파일을 쌓아주면 먼저 들어온 데이터부터 처리한다.
- 콜라비에서는 RabbitMQ사용 , thumbee처리에 활용
- MQ의 경우 명확히 Q에 처리해야하는 데이터를 쌓아주고 FIFO한다.
- 하나의 항목을 한 명이 가져가 처리한다
-----------------------------------------------------------------------
pub/sub
- publish : 이벤트를 만든다
- subscrab ( 서브스크랩 ) : 이벤트를 받아서 처리한다
- 지원 서비스 : Redis 를 이용해 사용
; redis는 기본적으로 세 대의 서버로 구축된다 ( master, slave1, slave2 ), 장애처리를 위함 , master가 죽으면 slave가 살아난다 , pub/sub를 지원
- 데이터가 쌓이지 않는다.
- publish 하는 시점에 sub가 없으면 데이터가 사라진다. 그래서 항상 redis는 살아있어야 함
- 데이터가 유실될 수도 있다. ()
- redis에 쌓인 데이터는 모든 websocket서버에 데이터를 발송한다. 사용자가 모든 서버에 붙어있다고 판단하고 조건에 적합한 사용자에게 데이터를 보여주어야 하기 때문이다
-
--------------------------------------------
client ---[ ELB ]--> Websocket Server <---[ sub ]---> redis <--[pub]-- api.service
- Websocket서버는 sub 하고 있다가 rdis에서 데이터를 받아간다
- api 에서 정형된 결과를 publish하여 redis에 보낸다
* ELB
: 사용자의 요청이 들어오면 각 connection 을 서버에 연결해준다.
:
* 트랜잭션
: 하나의 커넥션으로 여러가지 비즈니스 프로세스를 처리한 후 마지막에 저장하는 모든 작업을 트랜젝션.
- auto Commit(false)시작 후 commit 까지
* Async
- sync : 하나의 서비스 내의 함수 하나가 모두 수행되고 결과를 보낸 종료되는 상태
- Async : 기존 함수의 내의 함수가 수행중일 때 수행중인 함수가 끝나지 않더라도 기존 함수의 쓰레드를 진행하는 경우, 별도로 계속 수행되는 함수를 의미한다.
- api 서비스의 가장 마지막에 호출한다.
: 실행이 목적인 기능, 왜 필요하냐면?
- 모바일 푸시 발송 시 fcm > 구글 > 기기 까지 발송하는 프로세스가 오래 걸릴 수 있는데, 이 동작의 응답을 기다리다보면 기존 요청한 데이터의 처리가 진행중인 상태로 남는다 .
따라서, 당장 진행할 수 있는 항목은 진행하고, 이외의 시간이 오래걸리는 것은 별도으 async로 처리한다.
* CUD 할 떄 어떤 사용자가 해당 데이터에 접근하면, DB에서는 해당 데이터에 lock를 걸어둔다.
commit가 되면 lock가 해제된다.
* 쓰레드 - 웹의 쓰레드와 다르므로 재요청하기
'실무로부터' 카테고리의 다른 글
| [dev] 브라우저 저장소 ( local Storage / session Storage / cookie ) (2) | 2023.07.14 |
|---|