Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2차 세미나 #6

Open
Yeonnies opened this issue Oct 22, 2024 · 0 comments
Open

2차 세미나 #6

Yeonnies opened this issue Oct 22, 2024 · 0 comments

Comments

@Yeonnies
Copy link
Collaborator

Yeonnies commented Oct 22, 2024

Switch?

L4 Switch, L7 Switch 가 무엇인지 조사해보세요.

  • 스위치(Switch) : 컴퓨터 네트워크에서 데이터를 전송하고 연결하는 장비
  • 로드 밸런서(Load Balancer) : 네트워크나 서버에 분산된 작업 부하를 공평하게 분배하는 장치, 여러 대의 서버나 네트워크 장치에 들어오는 요청을 받아 해당 요청을 처리할 서버로 전달하는 역할
  • 로드 밸런서의 장점
  1. 서버 그룹에 들어오는 트래픽을 여러 서버로 균등하게 분산하여 각 서버의 부하를 분담시켜 특정 서버의 과부하를 방지하고 시스템 전체의 성능을 향상시킨다.

  2. 한 대의 서버에 장애가 발생해도 다른 서버로 요청을 전달할 수 있어 시스템의 가용성이 높아진다.

  3. 새로운 서버를 시스템에 추가하거나 기존 서버를 제거하는 경우, 로드 밸런서는 자동으로 이를 감지하고 트래픽을 새로운 서버로 분배하는 것이 가능하다.

-> 스위치는 로드 밸런서의 역할을 수행한다.

L4 스위치: L4(Transport Layer)에서 동작하는 기능을 제공하는 로드 밸런서 역할을 수행하는 스위치

  • Transport Layer의 헤더 정보를 분석하여 데이터 패킷을 처리하고 전송 방향을 결정
  • TCP/UDP 패킷의 정보를 분석해 데이터의 전송 방향을 처리
     

L7 스위치: L7(Application Layer)에서 동작하는 기능을 제공하며 고급 로드 밸런싱과 트래픽 관리에 사용되는 스위치

  • 패킷의 내용들(URL, 캐시, 쿠키)을 분석해 요청을 분배
  • L7 스위치는 애플리케이션 수준에서 보안 기능을 제공해 줄 수도 있음
     

-> L7 스위치는 L4 보다 좀 더 세밀한 수준의 고급 로드 밸런싱과 트래픽 관리가 가능

왜 L7과 L4를 같이 사용하는가?

L7 스위치를 사용하면 더 많은 자원이 발생함. L4 스위치만으로도 충분하다면 굳이 L7을 사용할 필요 X
HTTP 요청 등 L7 계층의 해석이 필요한 경우에는 L7 스위치를 사용하고, TCP/UDP 로드밸런싱이 필요하다면 L4 스위치를 사용하는 식으로 사용

What is RESTful?

REST API 에 대해 조사해 와인잔조원들과 논의해보세요.

아키텍처 스타일의 설계 원칙을 준수하는 API를 REST(Representational State Transfer) API라고 하는데, 이러한 REST 원칙을 잘 지키도록 실제로 설계한 API를 RESTful API라고 한다.

  • HTTP URI를 통해 자원을 명시하고, HTTP Method (POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD(create, read, update, and delete) OPERATION을 적용하는 것
  • 이러한 RESTful API를 사용할 경우 특정 언어나 기술에 종속되지 않고, 클라이언트와 서버를 분리시켜 의존도를 낮춤

설계 원칙

  1. 자원을 식별할 수 있어야 한다. -> URL만으로 어떤 자원을 제어할 지를 알 수 있어야 한다.
  2. 행위는 명시적이어야 한다. -> 메소드를 명확하게 구분해서 사용해야 한다.
  3. 자기 서술적이어야 한다. -> 데이터에 대한 메타정보만 가지고도 정보를 이해할 수 있어야 한다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant