레디스를 가장 쉽게 실습할 수 있는 것이 "채팅"
카카오톡, 라인에서 다 쓴다. 
인증 정보를 보관할 때 ( JWT 토큰 ) : 데이터를 저장할 때 만료 시간 지정 가능. 
랭킹 ( 게임에서 필요한 실시간 랭킹 ) 

 

  1. 관심사 분리

(코드 레벨에서 관심사 분리, 함수 기능별로 쪼개면 된다.) (함수는 함수끼리 독립적이고, 서로 엮여있을 필요없다.) (백엔드 Servlet filter - controller -service -repository)

  • 각 계층에서 어떤 일을 하는지 관심없다.
  • 각 계층에서 수정이 필요할 때 다른 계층에 영향을 미치지 않는다.
  • 내가 알아야 하는 건 오직 내가 호출하는 녀석뿐이다.
  • 주니어 개발자도 쉽게 기능 개발을 위해서 투입될 수 있다.
  • 코드를 이상하게 짰다고 해서 다른 계층과 기능으로 전파되지 않는다.
  • 엔터프라이즈 코드(서버 코드)가 어떻게 동작하는지 개별 개발자의 관심사가 아니다.
  • 문제가 생겨도 문제가 생긴 지점을 찾기 쉽다.
  • 대규모 프로젝트 개발에 유리하다.

( 개발자 간의 관심 분리 )

  • 프론트엔드가 아직 안 나와서 테스트를 못하고 있다...?
  • Swagger 쓰는 이유? 백엔드, 프론트엔드 없이 테스트 해볼 수 있다. / 역할 분리

블랙박스식 개발

  • 과정은 중요하지 않고, input, output에 집중한다.
  • 정상적으로 동작하는지만 본다.
  • 장점 : 리팩토링이 쉽다, 병목 지점을 찾아내기 쉽다. 기능의 분리가 쉽다.

30만 동시접속하는 배달 주문서비스 시스템을 만든다 어떻게 만들래? 로드 벨런서를 놓고 게이트 웨이를 넣고 분산 네트워크로 만든다.

  1. 레디스 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

+ Recent posts