본문 바로가기

분류 전체보기27

로드 밸런싱(SLB, Server Load Balancing) 기본 개념 패킷이 네트워크 장비에 의해 어디로 보내질지는 몇 계층 통신인가, 그래서 어떤 데이터를 보느냐에 따라 달라진다. 이 구분은 OSI 7 Layer model에 기반한다. Layer 2 : Ethernet Header의 MAC address 구분 Layer 3 : IP Header의 IP address 구분 Layer 4 : TCP,UDP Header의 Port 구분, packet 조작, Session 관리 Layer 7 : Application 별 Payload 구분 (HTTP, RTSP 등) 이 중 여러대의 서버로 부하를 분산하는 로드밸런싱(SLB, Server Load Balancing) 기법은 일반적으로 L4 통신에 해당한다. 보통 서비스 운영에 필요한 포트를 기준으로 분산시키기 때문이다. 그래서 L.. 2020. 5. 12.
CPS, TPS L4 용어 " L4에서는 CPS / L7에서는 TPS 용어 사용 " #CPS (Connection Per Second) 초당 TCP Connection을 생성할 수 있는 최대 개수 ex) 1 CPS : Client가 LB의 VIP로 접속하여 특정 서버로 분산된 후, 다시 세션을 끊는 하나의 과정 ex) 200,000 CPS를 지원하는 장비 = 1초당 200,000의 커넥션을 동시에 처리 Connection : 하나의 세션이 열고 닫히는 순간까지를 의미 200,000 CPS라 하면 X 7(열릴때(3-way) + 닫힐때(4way)) = 1,400,000 의 패킷이 오가는 것 #TPS (Transcation Per Second) 초당 최대 처리 건수 = 초당 교환되는 데이터의 수치 (L7 성능 지표) RPS(.. 2019. 4. 7.
[golang/err] import cycle not allowed #현상 Cross-refering packages -> 각 패키지들이 상호 참조 (순환 종속) package 간 종속성이 생겨버리면 단위 테스트 하기도 어려워지고 한 package가 변경 될 때마다 종속성을 가지는 package까지 같이 컴파일 돼야하므로 비용 증가함 각 개체가 다른 개체를 유지하기 때문에 memory leak의 위험성도 높아짐 (+) package는 compile의 단위가 되는데 go는 빠른 compile 좋아하는 성향 탓인지 import cycle을 아예 막아버림 뭐 애초에 좋은 모델도 아니니까 ... #예제코드 욕심이 과하면 화를 부르는 법 대애충 A에서도 B 출력하고 싶고 B에서도 A를 출력하고 싶어하는 상황이라고 가정해보자 [ pkg_a.go ] package A import (.. 2019. 4. 6.