220610 TIL

Parker.Park·2022년 6월 10일
0

TIL

목록 보기
18/39

220610 TIL

프로젝트 최종 마무리를 하며

약 한 일주일 정도 팀프로젝트 git Repository와 관련 내용을 정리하는 시간이 주어졌다. 개인적으로 무언가를 추가하기에는 부족한 시간이었고, 이전에 클린코드 및 리팩토링은 어느정도 정리했다 생각하여서 관련 내용들만 정리하면 되었다. 그런데 그런데 내가 한 부분에 대해서는 정리를 오늘 급하게 했다 ㅠ. 정리를 하다 보니 GCP 관련은 그래도 도맡아서 해결한거 같아 개인 역할에 대해서 올렸다. 그런데 또 관련 내용을 정리를 하다보니 부족함을 많이 느꼈다. 그래서 GCP 배포 관련으로 차근 차근 배워 나가보기로 결심 하였다.

Load Balancing?

GCP에서 로드밸런서를 생성을 하고 연결은 하였으나 그 정확한 의미가 무엇이냐고 묻는다면 대답하기는 어려울 것이라 생각한다.
Load Balancing은 서버의 과부화를 피하기 위해 사용 하는 것이라고 한다. 컴퓨터 응답 속도는 정말 빠르지만 서비스 규모가 커질 수록 사용 인원이 수만? 수백만? 수천만 이라면? 과부화가 발생하기 마련일 것이다. 처리 속도를 높이기 위해서는 두 가지 방법이 있다고 한다.

  • scale-up
    서버의 하드웨어 성능을 올리는 방법
  • scale-out
    여러대의 서버 두어 나눠서 일하는 방법

scale-out 같이 여러대를 둘 경우 몰려드는 트래픽을 분산하는 것이 필요 할 것이다. 이런 분산 처리 시스템 기술을 Load Balanceing이라고 한다.

로드 벨런싱 기법들

  • Round Robin Method
    서버에 들어온 순서대로 돌아가는 방식이라고 한다. 서버와의 연결이 오래 지속되지 않는 경우에 활용하기 적합하다고 한다.
  • Weighted Round Robin Method(가중 라운드 로빈 방식)
    서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트를 배정하는 방식이라고 한다. 서버마다 트래픽 처리능력이 상이한 경우 사용하는 부하 분산 방식이라고 한다. 예를 들어 A서버 가중치를 3이라 하고, B서버 가중치를 1이라고 한다면, A서버에는 3개의 요청을 B서버에는 1개의 요청을 전달한다고 한다.
  • IP Hash Method(IP 해시 방식)
    클라이언트의 IP 주소를 특정 서버로 요청하는 방식이라고 한다. 사용자의 IP를 해싱하여 로드 주기 때문에 항상 동일한 서버로 연결하는 것을 보장한다고 한다.
  • Least Response Time Method(최소 응답시간 방식)
    서버의 연결 상태와 응답시간을 모두 고려하여 트래픽을 배분한다고 한다. 가장 짧은 응답시간을 보이는 서버에 우선적으로 로드를 배분하는 방식이라고 한다.

Load Balancer?

주로 부하 분산에는 L4로드밸런서와 L7로드밸런서가 많이 활용 된다고 한다. 여기서 L4?, L7은 무엇인가?

OSI 모형(Open Systems Interconnection Reference Model)

국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이라고 한다. 일반적으로 OSI 7 계층이라고 한다. 각 계층별로 올라 갈 수록 상위 개념이라고 생각한다. 차근차근 알아보자.

  • L1 : Physical Layer(물리계층)
    물리계층은 실제 장치들을 연결하기 위해 필요한 전기적 물리적 세부 사항을을 정의한 것이라고 한다. 예를 들어 핀들의 배치나 전압, 전선의 명세 등이 이 계층에 포함된다고 한다. 통신 채널을 통해 전송되는 사용자의 디지털 데이터를 이에 상응하는 신호들로 변환, 변조 하여 구리선이나 광섬유 선 또는 무선통신을 통해 전달 하는 역할이라고 이해 했다. 대표적인 장치로 Hub리피터가 있다고 한다.

  • L2 : DataLink Layer(데이터 링크 계층)
    데이터 링크 계층은 포인트 투 포인트 간 신뢰성 있는 전송을 보장하기 위한 계층이라고 한다. 순환 중복 검사(CRC)라는 오류제어와 흐름제어가 필요하다고 하다. 주소 값은 물리적으로 할당받는데, 네트워크 카드가 만들어질 때부터 받는 맥 주소(MAC address)라고 한다.
    보통 L1, L2는 칩 형태로 구현 된다고 한다. 즉 하드웨어라는 것이다.
    이더넷, USB, Bluetooth, Wi-Fi 같은 하드웨어 같의 규격들이 대부분 데이터 링크 계층에 해당 된다고 한다.

  • L3 : Network Layer(네트워크 계층)
    네트워크 계층은 여러개 의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층이라고 한다. 여러 컴퓨터들이 라우터들을 통해 연결 되어 있다면, 라우터들은 라우터 끼리 모여 있을 것이다. A에서 B로 데이터를 보내려고 할 때 길을 찾고 라우터끼리 통신하는 것을 의미하는 것으로 이해했다.
    현재 사용하고 있는 인터넷을 기본적으로 네트워크 계층에 속한다고 한다.

  • L4 : Transport layer(전송 계층)
    전송 계층은 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해주어서 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다고 한다. 하지만 와닿을 정도로 이해가진 않았다. 프로토콜로는 TCP / UDP가 있다고 하고, YouTube 영상 자료로 보니 port번호로 프로세스끼리 구분 짓는다고 한다.

  • L5 : Session Layer(세션 계층)
    세션 계층은 양 끝단의 응용프로세스가 통신을 관리하기 위한 방법을 제공한다고 한다. 통신 장치간의 연결을 설정하고 관리 및 종료하고 또한 연결이 전이중(Full duplex / 양방향)인지 반이중(half duplex / 단반향)인지 여부를 확인한다고 한다. 이 계층은 TCP/IP세션을 만들고 없애는 책임을 진다고 한다.

  • L6 : Presentation Layer(표현 계층)
    표현 계층은 코드간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상의 차이를 다루는 부담을 응용계층(Application Layer)으로 부터 덜어준다고 한다. 또한 표현 계층에서는 암호화와 복호화가 이루어진다고 한다.

  • L7 : Applicatioon Layer(응용 계층)
    응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다고 한다. 대표적은로는 HTTP 프로토콜이 있다고 한다.

그런데 OSI L5~L7 은 TCP/IP 에서 Application Layer 이다.

최근까지 인터넷 통신하는데 있어 가장 범용적으로 TCP/IP로 이루어져 있다고 한다. TCP/IP 모델 에서는 OSI에서 L5~L7이 해당하는 계층을 통합하여 Application Layer라고 한다.

그림 출처 : https://namu.wiki/w/TCP/IP

L4 로드밸런서와 L7로드밸런서의 차이는?

갑작스럽게 방대한 OSI Layer가 나와서 당황했다. 다시 로드밸러서로 돌아와서 정리하겠다.

  • L4 로드밸런서 -> NLB(Network LoadBalancer)
    네트워크 계층(IP, IPX)나 트랜스포트 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산한다고 한다. IP주소나 포트번호, MAC주소, 전송 프로토콜에 따라 트래픽을 나눈다고 한다.
  • L7 로드밸런서 -> ALB(Application LoadBalancer)
    애플리케이션 계층(HTTP, FTP, SMTP)에서 로드를 분산하기 때문에 HTTP헤더, 쿠키 등과 같이 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는것이 가능하다고 한다. 또한 L7로드밸런서의 경우 특정한 패턴을 지닌 바이러스를 감지하고, Dos/DDos와 같은 비정상적인 트래픽을 필터링 할 수 있어 네트워크 보안 분야에서도 활용되고 있다고 한다.
    그림 출처 : https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903

마치면서

부하분산으로 시작해서 갑작스러운 OSI 모델까지 알아보게 되었는데 유익한 시간었다. 하지만 생각했던 것보다 시간을 너무 많이 할애 한거 같아 ㅠㅠ 아쉽긴하다. GCP 부하분산으로 넘어 오면서 더 알아봐야 할 것들이 많지만 이쯤에서 잠시 끊어야겠다. 나중에 Load Balancer로 포스팅 하는 것으로 계획하면 끝내야 겠당.

참조

[로드 밸런서(Load Balancer)란?, nesoy github, 2022년06월10일 접속]
https://nesoy.github.io/articles/2018-06/Load-Balancer
[로드밸런서(Load Balancer)의 개념과 특징, naver post, 2022년06월13일 접속]
https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903
[[10분 테코톡] 🔮 히히의 OSI 7 Layer, 우아한Tech Youtube, 2022년06월13일 접속]
https://www.youtube.com/watch?v=1pfTxp25MA8
[그림으로 배우는 네트워크 이야기 [OSI 7 Layer/네트워크], KnowlliPop 놀리팝
, 2022년06월13일 접속]
https://www.youtube.com/watch?v=aTPy201F0AA
[OSI 모형, 나무 위키, 2022년06월13일 접속]
https://namu.wiki/w/OSI%20%EB%AA%A8%ED%98%95#s-2.2
[OSI 7 계층, 해시넷, 2022년06월13일 접속]
http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5#n
[TCP/IP, 나무위키, 2022년06월14일 접속]
https://namu.wiki/w/TCP/IP

profile
개발자준비중

0개의 댓글