애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법
많은 양의 트래픽을 처리하기 위해 대부분의 애플리케이션에는 데이터가 중복되는 리소스 서버가 많이 있습니다. - 이 중복되는 서버에 부하를 분산시켜준다는 말인듯함
애플리케이션 서비스의 가용성, 확장성, 보안 및 성능향상에 도움
가용성: 시스템의 내결함성을 향상시켜 얻을 수 있음
Fault tolerance
애플리케이션 중지 없이 애플리케이션 서버 유지 관리 또는 업그레이드 실행
백업 사이트에 자동 재해 복구기능 제공
확장성: 수천 개의 클라이언트 요청을 처리할 수 있는 능력
보안: 보안 계층을 추가
로드 밸런서가 서로 다른 클라이언트 요청에 가장 적합한 서버를 결정하기 위해 따르는 규칙
OSI 7계층에 따라 나뉨
L4: NLB(Network LoadBalancer) | L7: ALB(Application LoadBalancer) |
---|---|
Transport 계층을 사용 | Application 계층을 사용 |
클라이언트 → 서버 경로의 트래픽이 로드밸런서를 통함 | 클라이언트 ⇆ 서버 경로의 트래픽 모두 로드밸런서와 통신함 Reverse Proxy |
클라이언트 → 서버 엑세스 제한 가능 | 클라이언트 → 서버 엑세스 제한 가능 |
서버의 Security Group을 통한 보안이 가능 따로 시큐리티 그룹을 통한 보안 불가능->보안 그룹을 통한 트래픽 제어 불가 | Security Group을 통한 보안이 가능 |
A Record 사용가능 | CNAME사용 |
TCP/UDP 프로토콜을 사용할 수 있는 로드밸런서 L4 스위치라고도 함 시스템 리소스 소모가 적어 더 많은 트래픽 처리 가능 | HTTP/HTTPS/WebSocket을 사용할 수 있음 시스템 리소스 소모가 많음 |
한대의 서버에 장애가 발생/추가 증설시 무중단 서비스가 가능함 | |
고정 IP가 필요한 경우 사용 | |
트래픽 플로우-DSR과 유사-> NLB의 트래픽 처리 부담이 감소함 근데 실제로는 NLB를 통한다고 함 | 제어함 |
대상에 따라 Source IP NAT 적용 | 항상 적용 |
http://www.incodom.kr/Load_Balancing#h_12a694c04cfce20f85615ea124aa10ba
https://aws-hyoh.tistory.com/entry/AWS-Network-Load-Balancer-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
IP 주소와 포트 번호를 분산할 수 있음❓
Elastic IP 를 Static IP로 사용이 가능하여❓DNS Name, IP주소 모두 사용 가능
Name Server 또는 Route 53에서 A Record 사용이 가능
URL 또는 HTTP 헤더에서 부하 분산이 가능
IP 주소가 변동되기 때문에 Client 에서 Access 할 ELB의 DNS Name을 이용해야 합니다
또는 NLB를 ALB의 앞단에 두고 고정된 IP를 제공할 수 있음
Elastic Load Balancing은 Application Load Balancers, Network Load Balancers, Gateway Load Balancers 및 Classic Load Balancer를 지원합니다.
only to healthy targets
Elastic Load Balancing은 활성화된 각 가용 영역에 대해 네트워크 인터페이스를 생성합니다. 가용 영역의 각 로드 밸런서 노드는 이 네트워크 인터페이스를 사용하여 고정 IP 주소를 가져옵니다.
NAT(Network Address Translation)
네트워킹에서 IP의 TCP/UDP
포트 숫자
와 소스 및 목적지의IP주소
를 rewrite하여 라우터를 통해 네트워크 트래픽을 주고 받음
public->private network
private->public network 이동시 필요함주로 gateway역할을 하는 장비가 수행함(세션장비)
NAT내역을 기록한 테이블 - 세션 테이블 → stateful하게 만들어줌
ex. 가정- 공유기, 기업- 방화벽, vpn, L4스위치
https://aws-hyoh.tistory.com/145
https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/
클라이언트 요청에서 확인하는 콘텐츠에 따라
고가의 서버로 확장(scale-up)하지 않고 저렴한 비용으로 다수의 서버를 증설(scale-out)하여 경제적으로 비용절감 할 수 있다
https://aws.amazon.com/ko/what-is/load-balancing/
암호화-복호화에 사용하는 키가 동일
속도가 빠르다
키를 교환해야한다는 문제 (키 배송 문제)
암호화-복호화에 사용하는 키가 다름 == 비대칭키
속도가 느림
대칭키의 키교환 문제를 해결하기 위해 등장
키가 공개되어있기 때문에 키를 교환할 필요가 없어
공개키는 모든 사람이 접근 가능한 키이고 개인키는 각 사용자만이 가지고 있는 키
개인키를 갖고 있는 사람만이 공개키로 암호화한 데이터를 볼 수 있다
SSL 인증서 발급
1. 서버가 CA로부터 공개키의 소유를 증명하는 인증서를 발급받음
2. 클라이언트에게 공개키가 포함된 인증서를 주고
3. 클라이언트는 CA에게 인증서 확인을 요청하고(CA리스트를 그냥 확인하는 건가?)
4. 맞다면 공개키로 데이터를 암호화해서 서버에 전달
5. 서버가 개인키로 이 데이터를 복호화한다면 서버는 인증된 서버가 됨
락이 없다면 두 개 이상의 스레드가 동시에 자원에 접근할 수 있으므로, 데이터의 무결성이 보장되지 않는다. 락의 개념은 멀티스레드를 사용하는 환경이라면 어디든 사용될 수 있다
시스템 자원에대한 요구가 뒤엉킨 상태
둘 이상의 프로세스가 다른 프로세스가 사용중인 자원을 무기한 대기하는 상태
해결
https://yoongrammer.tistory.com/67
양 쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어, 네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게 서비스를 사용할 수 있도록 연결해주는 소프트웨어
효율적인 서비스 처리를 위해 플랫폼을 3계층으로 나눈 것.
클라이언트-서버 구조에서 미들웨어가 있는 구조
미들웨어를 이용한 분산 컴퓨팅은 서버측에 약간 무리가 있을 수 있지만, 서버 측은 멀티 프로세스 시스템이나 클러스터링(clustering)을 이용함으로써 문제를 해결할 수 있다
서버가 나뉘어있어 각 서버의 부하가 줄어든다.
↔ 장애가 발생하는 포인트가 늘어나 관리 포인트가 많아진다.
thin-client를 사용하여 클라이언트 컴퓨터 성능이 떨어져도 프로그램을 실행에 문제가 없다
Presentation Tier
(ex. 웹서버)Application Tier
(ex. WAS)Data Tier
(ex. DB)+ Ntier Architecture
https://12bme.tistory.com/289
def solution(k, m, score):
score.sort(reverse=True)
ans=0
i=0
for _ in range(len(score)//m):
ans+=min(score[i:i+m])*m
i=i+m
return ans
k: 가장 높은 등급
m: 한 상자에 들어가는 과일 갯수
score: 과일별 등급 배열
오름차순으로 배열해서 가장 높은 것부터 m개씩 잘라서
그 중 가장 등급이 낮은 과일*m을
총 나올 수 있는 과일 상자수만큼 반복
def solution(k, m, score):
return sum(sorted(score)[len(score)%m::m])*m
오름차순으로 정렬한 score를
len(score)%m :남는 박스는 건너뛰고 ⭐
거기서부터 리스트 슬라이싱을 m개씩해서 더함
기가막히넹ㅋㅋㅋ
그리고 m은 어차피 다 공통으로 곱하는 거니까 맨 마지막에 한번만 곱해줌
굳이 정렬을 내림차순으로 바꿔줄 필요도 없고 i나 ans같은 변수도 따로 안만들어주고, 그 값이 바뀌지도 않고 하니까 훨씬 효율적이겠다 아
solution = lambda _, m, s: sum(sorted(s)[-m::-m]) * m
오름차순으로 정렬한 리스트를
-m부터 처음으로 범위를 좁혀서
뒤에서부터 m씩 뛰면서 슬라이싱함
그럼 m개씩 끊은 것 중에 작은 값이 리스트에 들어가게 돼서 그걸 합해서 m곱하면 끗
-m+1~끝까지는 갯수가 m-1개임->버려지는 과일
근데 이걸 오름차순으로 해서 버려도 상관이 없나..? 최대이익을 내야하는데??❓근데 답은 일단 맞으니까.. 으아라아가3ㅏ