스터디 진행 일시
날짜 : 5월 23일 (금요일) 시간 : 오후 4시 ~ 9시 (5시간) 장소 : 강남 (오프라인)


🔧 금주 스터디 일정
  • @yugyeong71님 면접 연습
  • 개발 책 1장부터 5장 복기
  • 라이브 코테 진행


😵‍💫 면접 연습
  • Blue/Green 배포 방식 설명해주세요.
  • IV 값의 역할은 무엇인가요?
  • 폴링과 롱폴링에 대해 설명해주세요.
  • Spring 트랜잭션 동작 원리에 대해 설명해주세요.
  • equals랑 ==의 차이는 무엇일까요?
  • 추상클래스와 인터페이스의 차이는 무엇일까요?
  • @restcontroller, @controller차이는 무엇일까요?
  • 트랜잭션이 달리지 않은 메소드에 내부 메소드에는 트랜잭션이 달려있는데 적용이 안된다 이유는 무엇일까요?
  • requestbody, @modelattribute 차이는 무엇일까요?
  • 세션과 토큰의 차이에는 무엇이 있을까요?
  • JWT 사용할 때 보안 이슈는 무엇이 있을까요?


📖 개발 책 1~5장 복기
  • 1장

    • 웹 계층은 무상태 계층으로
    • 모든 계층에 다중화 도입
    • 가능한 한 많은 데이터를 캐시할 것
    • 여러 데이터 센터를 지원할 것
    • 정적 콘텐츠는 CDN을 통해 서비스할 것
    • 데이터 계층은 샤딩을 통해 그 규모를 확장할 것
    • 각 계층은 독립적 서비스로 분할할 것
    • 시스템을 지속적으로 모니터링하고, 자동화 도구들을 활용할 것
  • 2장

    • 근사치를 활용한 계산 (rounding and approximation)
    • 면접장에서 복잡한 계산을 하는 것은 어렵기 때문에 적절한 근사치를 활용하여 시 간을 절약하자.
      • Ex) “99987/9.1” → “100,000/10”
    • 가정(assumption)들은 적어 두라.
    • 단위(unit)를 붙이라.
    • 많이 출제되는 개략적 규모 추정 문제는 QPS, 최대 QPS, 저장소 요구량, 캐시 요 구량, 서버 수 등을 추정하는 것이다. 이런 값들을 계산하는 연습을 미리 하자.
  • 3장

    • 면접에서 시스템 설계나 어떠한 문제를 해결하는 것이 나온다면 바로 풀지말자.
    • 면접관과 핑퐁(티키타카)하면서 최대한 요구사항을 찾고 설계하자.
  • 4장
    • 프론트에서도 처리량 설계를 제한할 수 있고 백엔드에서도 제한할 수 있다.
    • 처리량 제한 알고리즘에는 다음과 같은 것이 있다.
      • 토큰 버킷
      • 누출 버킷
      • 고정 윈도 카운터
      • 이동 윈도 로그
      • 이동 윈도 카운터
    • 예외나 에러를 처리하는 코드를 도입하여 클라이언트가 예외적 상황으로부터 우아 하게 (gracefully)복구될 수 있도록 한다.
  • 5장
    • 안정 해시를 사용하면 아래와 같은 이점을 갖는다.
      • 서버가 추가되거나 삭제될 때 재배치되는 키의 수가 최소화된다.
      • 데이터가 보다 균등하게 분포하게 되므로 수평적 규모 확장성을 달성하기 쉽다.
      • 특정한 샤드(shard)에 대한 접근이 지나치게 빈번하면 서버 과부하 문제가 생길 수 있다.


💻 라이브 코테
  • 진행 방식 -> 라이브 코테 Repo
    • 괄호 문자열이 주어졌을 때, 유효한 괄호인지 판별하세요.
      • 예: “({[]})” → true, “({[})” → false
    • 왜 이렇게 풀었는지 설명할 것.
    • 공간복잡도와 시간복잡도가 어떤지 설명할 것.