[TIL] 기술교육 - 웹 서버 교육

웹 서버 교육 : 이경환 수석님

웹 서버를 두 대로 늘리면?

로드 밸런서, 공유 스토리지는 있다고 가정

  • 우리 조가 생각한 문제점 및 해결법
    • 세션 동기화 문제 (서버끼리의 통신)
    • 캐시 문제 (서버끼리의 통신)
    • 장애 대처 (로드밸런서)

  • 웹 서버 1대, 디비 서버 1대
    • SPOF : 웹, 디비 뭐든 하나만 죽으면 (Single Point Of Failure)

  • 세 대의 서버

  • 부하 분산 (LB : Load Balancing)
    • 두 서버에 트래픽을 분배
  • 고가용성 (HA : High Availability)
    • 예) 장애 시에 대기 서버를 활용. 트래픽을 분배하지는 않음.
  • 부하분산과 고가용성
    • 가장 흔한 것이 L4

      L7 헬스체크

    • HAProxy (SW L4)
    • 사내 교육 : 개발자를 위한 L4
    • DNS RR(Round Robin)을 이용
      • TTL(Time to Live)을 아무리 짧게 해도 브라우저 캐시가 문제
      • 서버쪽 JVM 캐시
    • 세션 공유
      • 로그인 정보 등을 공유해야함
      • 쿠키를 이용할 수도 (데이터 양에 제한)
    • 웹 서버 로컬 디스크에 공유 정보를 저장할 수 없음
      • 구글 앱엔진과 같은 자동 스케일링을 해주는 인프라의 중요 제한 사항
    • 두 서버간 컨텐트를 공유하려면
      • DB. NAS/NFS, Redis

웹 서버 두 대로 정상 서비스가 될까?

각 서버가 전체 트래픽의 50% 이상을 받으면…

  • 한 대에 문제가 생기면 다른 한 대가 전체 요청을 처리 할 수 없어 결국 전면 장애로 이어짐!!

L4에 대해 조금만 더

  • DSR(Direct Server Return) 모드

    L4가 양방향 프록시라면

    • 모든 웹 서버가 받는 트래픽을 L4가 다 받아야함
    • DSR 모드라면 L4의 부담을 줄여줄 수 있음 (웹->클라이언트 direct)
    • 적당한 예
      • 요청 패킷이 적은 케이스
      • 일반적인 웹 요청
      • 파일 다운로드
    • 적합하지 않은 예
      • 요청 패킷이 많은 케이스
      • 파일 업로드와 같은 웹 요청. 업로드 할 때는 L4를 거치지 않도록 예외처리
      • SMTP
  • L7과 L4


웹 서버 기술교육을 들으며 느낀 점

  • 사실 그저 코드를 작성하여 로컬에서의 서비스를 만드는 것은 학부때 혼자서도 해볼 수 있었고, 여러 교육기관을 통해서도 할 수 있었다.
  • 하지만 NHN basecamp에서는 나의 서비스를 여러 서버로 운영해보며 그에 대한 문제점과 해결법을 마주할 수 있었고, NHN Cloud의 Object Storage나 deploy를 이용하여 간단하게 배포를 하는 등 혼자서는 전혀 할 수 없었던 부분들을 해보며 시야를 넓힐 수 있어서 좋았다.
  • 이번주에는 인증서버 DB에 샤딩을 적용하는 것을 해보게 된다. 내용은 다행히 이해가 갔고, 이제 구현을 앞둔 단계에서 막막함이 있는데, 이 또한 해결하고 더 성장 할 것에 기대가 된다.