약 한 일주일 정도 팀프로젝트 git Repository와 관련 내용을 정리하는 시간이 주어졌다. 개인적으로 무언가를 추가하기에는 부족한 시간이었고, 이전에 클린코드 및 리팩토링은 어느정도 정리했다 생각하여서 관련 내용들만 정리하면 되었다. 그런데 그런데 내가 한 부분에 대해서는 정리를 오늘 급하게 했다 ㅠ. 정리를 하다 보니 GCP 관련은 그래도 도맡아서 해결한거 같아 개인 역할에 대해서 올렸다. 그런데 또 관련 내용을 정리를 하다보니 부족함을 많이 느꼈다. 그래서 GCP 배포 관련으로 차근 차근 배워 나가보기로 결심 하였다.
GCP에서 로드밸런서를 생성을 하고 연결은 하였으나 그 정확한 의미가 무엇이냐고 묻는다면 대답하기는 어려울 것이라 생각한다.
Load Balancing은 서버의 과부화를 피하기 위해 사용 하는 것이라고 한다. 컴퓨터 응답 속도는 정말 빠르지만 서비스 규모가 커질 수록 사용 인원이 수만? 수백만? 수천만 이라면? 과부화가 발생하기 마련일 것이다. 처리 속도를 높이기 위해서는 두 가지 방법이 있다고 한다.
scale-out 같이 여러대를 둘 경우 몰려드는 트래픽을 분산하는 것이 필요 할 것이다. 이런 분산 처리 시스템 기술을 Load Balanceing이라고 한다.
주로 부하 분산에는 L4로드밸런서와 L7로드밸런서가 많이 활용 된다고 한다. 여기서 L4?, L7은 무엇인가?
국제표준화기구(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 프로토콜이 있다고 한다.
최근까지 인터넷 통신하는데 있어 가장 범용적으로 TCP/IP로 이루어져 있다고 한다. TCP/IP 모델 에서는 OSI에서 L5~L7이 해당하는 계층을 통합하여 Application Layer라고 한다.
그림 출처 : https://namu.wiki/w/TCP/IP갑작스럽게 방대한 OSI Layer가 나와서 당황했다. 다시 로드밸러서로 돌아와서 정리하겠다.
부하분산으로 시작해서 갑작스러운 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