전체적인 후기
- 실무적인 부분에 대해서 엿볼 수 있다.
- 아키텍처 설명이 비교적 얕아서 해석이 어렵지 않다.
- 구현 툴(예를 들면 RDBMS vs NoSQL) 을 선택하는 기준에 대한 기술이 잘 되어있다.
- CS적인 해결방식을 많이 엿볼 수 있다.
여러 해결과정들이 어디서 들어본 느낌이 계속 든다. 이것이 CS 의 중요성..?? 돌고도는 CS..
어떻게 활용하면 좋을까?
- 요즘 면접 질문들이 더욱 현업과 관련해서 많이 물어보는 게 느껴진다.
- 아키텍처에 관심이 많다면 이번 기회에 여러 기술을 살펴보고, 기억해두었다가 이후에 적용할 때 써보면 좋을 것 같다.
- 문제 해결의 방향성을 컴퓨터 공학적으로 풀어 나가고 싶다면 추천! 경쟁력이 생길 것이다.
기억에 남는 내용들
블룸필터라고 들어봤는가..?
- 특정 원소가 집합에 속하는지 검사하는데 사용하는 확률적 자료구조이다.
- 원리는 간단하다. 해싱 함수를 이용해서 원소를 해싱한 다음, 위 그림처럼 모두 더하는 형태이다.
해당 URL을 통해 사용해볼 수 있다. https://llimllib.github.io/bloomfilter-tutorial/ - 크롤링 파트에서 중복된 URL을 거를 때 사용된다고 한다.
→ 이 때 중복 검사 대표 자료인 체크섬도 함께 언급되었다.
무작위 행동 제한을 위한 처리율 제한
- 처리율 제한 - KONG 내부 원리에 해당한다.
- 버킷 형태와 슬라이딩 윈도우 형식으로 설명되어 있다. KONG/레디스가 버킷(또는 윈도우)과 같은 역할을 하게 된다. 네트워크 TCP 흐름제어 방식도 자연스럽게 떠오르고 내부적인 동작 방식을 이해할 수 있어서 재미있었다 😀
NOSQL 이 유리한 상황들
- 채팅 시스템의 경우 데이터 유형이 읽기/쓰기 비율이 1:1 임(대부분 오래된 메시지는 안 들여다보고 새로 온 메시지를 읽는 것에 집중하는 특징)
→ 쓰기 비율이 높다면 NoSQL이 유리할 수 있다. - 빠른 시간 안에 대량의 데이터를 입력하고 조회하는 서비스를 구현할 때 유리!
- NoSQL은 스키마가 정해져있지 않아 수평적 규모확장이 쉽고, 주로 인메모리 형태라 데이터 접근 시간이 낮다.
- RDBMS의 long tail (적은 수의 인기 있는 항목과 많은 수의 덜 인기 있는 항목으로 이루어진 분포) 문제를 해결할 수 있다.
분산 시스템
- SPOF : 항상 주의해야 할 요소이다. (요즘에도 이 문제를 완전히 해결하지 못한다고 한다..)
- async 환경으로 인한 불안정성 (분산시스템이면서 async일 때 안정성과 Liveness를 동시에 보장 불가) → 큐를 주로 이용한다.
아마 Redis, Kafka 등 큐 자료구조를 이용하는 이유가 이것일 것이다. - 분산시스템에서 유일 ID 생성기 → 트위터 스노플레이크 접근법으로 유일성을 보장할 수 있다.
아래 그림이 스노플레이크 접근법 이다. 유일성 보장을 위해 앞단에 계속 헤더를 붙이는 게 네트워크 패킷 이 자연스럽게 떠오른다.
단순히 응답시간, 정확도 같은 수치적인 내용 뿐만 아니라 사용자 행동 패턴(읽기/쓰기 비율)도 툴 선택에 영향을 미치는 것을 확인할 수 있었다. 이 외에도 캐싱, 그래프 DB.. 등 평소 잘 다루지 않았던 개념들을 학습할 수 있었고, 흥미를 못느끼던 CS 공부에도 진전이 있었다.
같은 시리즈 2권도 있는데 내용이 1에 비해서는 조금 어려운 것 같긴 하지만 나중에 꼭 읽어보면 좋을 것 같다.
'회고' 카테고리의 다른 글
[후기] 2024 KAUPC 문제 출제 후기(CodeTreeXKoala) (2) | 2024.08.07 |
---|---|
[후기] 당근 Summer InternShip Backend 합격 후기 (6) | 2024.07.31 |
[후기] SOMA 15기 합격 후기 (14) | 2024.03.22 |
[2023 회고록] 3학년을 보내며 .. (10) | 2023.12.31 |
[후기] 2023 KAUPC 문제 출제 후기 (3) | 2023.08.02 |