레디스를 가장 쉽게 실습할 수 있는 것이 "채팅"
카카오톡, 라인에서 다 쓴다.
인증 정보를 보관할 때 ( JWT 토큰 ) : 데이터를 저장할 때 만료 시간 지정 가능.
랭킹 ( 게임에서 필요한 실시간 랭킹 )
- 관심사 분리
(코드 레벨에서 관심사 분리, 함수 기능별로 쪼개면 된다.) (함수는 함수끼리 독립적이고, 서로 엮여있을 필요없다.) (백엔드 Servlet filter - controller -service -repository)
- 각 계층에서 어떤 일을 하는지 관심없다.
- 각 계층에서 수정이 필요할 때 다른 계층에 영향을 미치지 않는다.
- 내가 알아야 하는 건 오직 내가 호출하는 녀석뿐이다.
- 주니어 개발자도 쉽게 기능 개발을 위해서 투입될 수 있다.
- 코드를 이상하게 짰다고 해서 다른 계층과 기능으로 전파되지 않는다.
- 엔터프라이즈 코드(서버 코드)가 어떻게 동작하는지 개별 개발자의 관심사가 아니다.
- 문제가 생겨도 문제가 생긴 지점을 찾기 쉽다.
- 대규모 프로젝트 개발에 유리하다.
( 개발자 간의 관심 분리 )
- 프론트엔드가 아직 안 나와서 테스트를 못하고 있다...?
- Swagger 쓰는 이유? 백엔드, 프론트엔드 없이 테스트 해볼 수 있다. / 역할 분리
블랙박스식 개발
- 과정은 중요하지 않고, input, output에 집중한다.
- 정상적으로 동작하는지만 본다.
- 장점 : 리팩토링이 쉽다, 병목 지점을 찾아내기 쉽다. 기능의 분리가 쉽다.
30만 동시접속하는 배달 주문서비스 시스템을 만든다 어떻게 만들래? 로드 벨런서를 놓고 게이트 웨이를 넣고 분산 네트워크로 만든다.
- 레디스 DB
관계형 데이터베이스를 느리게 하는 것이 무엇일까? 관계가 복잡할 수록..! 느려진다. ( 댓글 , 좋아요, SNS등등 ) 레디스가 빠른 이유, 관계가 복잡할수록 key-value 구조라 빠르다. -sns는 follow와 게시글의 관계가 핵심이다. -하지만, 이를 관계형 db로 follow table과 feed table을 만든다면?
- 데이터베이스의 병목으로 서비스는 곧 마비가 될 것이다.
왜?
- 내가 팔로우하는 유저들의 리스트를 가져와서, select로 feef in uid(1,3,6...)
- 댓글의 대댓글 ? 대댓글의 가져오고, 좋아요도 가져온단다면... 서버는 망가질 것이다.
그래서redis가 강점을 가진다. 왜? 관계가 없는 비관계형 DB선택 -데이터의 저장은 오직 그것의 관심사만? -혹시나 발생하는 관계를 합치는 것은 DB가 아니라 API 서버가 전담한다. -왜? API 서버는 병목이 적고 증설이 가능하니까! -DB는 대개 유일하다.( 전체가 유일한 하나의 덩어리다) follow(key-value)로 넣어둔다. key만 가져오면된다?
'CS > 디지털상식' 카테고리의 다른 글
DSS, OLAP, OLTP, DW (0) | 2020.02.25 |
---|---|
빅데이터 (0) | 2020.02.25 |
어셈블리어, 컴파일러, 인터프리터 (0) | 2020.02.22 |
정리해야할 것들. (0) | 2020.01.11 |