ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 항해 99 4주차 주특기 숙련 회고록_14일차
    항해[TIL] 2021. 11. 27. 04:29

    Today I Learnd 

     

    (2021. 11. 23. 화)

     

     

     

     

    목차

    1.  TCD와 UDP
    2. Sequelize같은 ORM과 MySQL같은 데이터베이스의 차이
    3. gRPC 프로토콜
    4. 4주차 2일차 소감 및 부족한 점

     

    1. TCD와 UDP

     

    - TCP (Transmission Control Protocol)

    • 신뢰성이 요구되는 애플리케이션에서 사용된다.
    • 브라우저나 애플리케이션이 데이터를 송신과 수신할 경우에 사용된다.
    • 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메세지, 세그먼트라는 블록 단위)를 안정적으로 순서대로 에러가 없이 교환할 수 있게 된다.

     

     

    - TCP (Transmission Control Protocol) 특징

     

    연결형 서비스 = 가상 회선 방식을 제공한다.

    • 3-way handshaking 과정을 통해 연결을 설정
    • 4-way handshaking을 통해 연결을 해제

    흐름제어(Flow control) = 데이터 처리 속도를 조절해서 수신자의 버퍼 오버플로우를 방지한다.

    • 송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막는다.
    • 수신자가 윈도우크기(window size)값을 통해 수신량을 정할 수 있다.

    혼잡제어(Congestion control) = 네트워크 안에 패킷 수가 넘칠정도로 증가하는 것을 방지한다.

    • 정보의 소통량이 많으면 패킷을 조금만 전송해서 혼잡 붕괴 현상이 일어나는 것을 막는다.

    신뢰성이 높은 전송(Reliable transmission)

    • Dupack-based retransmission
      • 정상적인 상황에서는 ACK 값이 연속적으로 전송되어야 한다.
      • 그러나 ACK값이 중복으로 올 경우 패킷 이상을 감지하고 재전송을 요청한다.
    • Timeout-based retransmission
      • 일정시간동안 ACK 값이 수신을 못할 경우 재전송을 요청한다.

     

    - UDP (User Datagram Protocol)

    • 간단한 데이터를 빠른 속도로 전송하고자 하는 애플리케이션에서 사용한다.
    • DNS 서버에 대한 조회 등에서 짧은 제어용 데이터를 송신과 수신을 할 경우와 음성이나 동영상 데이터를 수신할 경우에 사용된다.

     

     

    - UTP 특징

     

    • 비연결형 서비스로 연결 없이 통신이 가능하고 데이터그랩 방식을 제공한다.
    • 데이터 경계를 구분합다. (데이터그램 서비스)
    • 정보를 주고 받을때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
    • 신뢰성 없는 데이터를 전송한다.(데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않는다.)
    • 패킷관리가 필요합니다.
    • 패킷 오버헤드가 적어 네트워크 부하가 감소되는 장점이 있다.
    • 상대적으로 TCP보다 전송속도가 빠르다.

     

     

    - TCP와 UDP의 차이점

     

    TCP UDP
    Connection-oriented protocol
    (연결지향형 프로토콜)
    Connection-less protocol
    (비 연결지향형 프로토콜)
    Connection by byte stream
    (바이트 스트림을 통한 연결)
    Connection by message stream
    (메세지 스트림을 통한 연결)
    Congestion / Flow control
    (혼잡제어, 흐름제어)
    NO Congestion / Flow control
    (혼잡제어와 흐름제어 지원 X)
    Ordered, Lower speed
    (순서 보장, 상대적으로 느림)
    Not ordered, Higer speed
    (순서 보장되지 않음, 상대적으로 빠름)
    Reliable data transmission
    (신뢰성 있는 데이터 전송 - 안정적)
    Unreliable data transmission
    (데이터 전송 보장 X)
    TCP packet : Segment
    (세그먼트 TCP 패킷)
    UDP packet : Datagram
    (데이터그램 UDP 패킷)
    HTTP, Email, File transfer
    에서 사용
    DNS, Broadcasting
    (도메인, 실시간 동영상 서비스에서 사용)

     

     

     

     

    2. Sequelize같은 ORM과 MySQL같은 데이터베이스의 차이

     

    - 차이점

     

    • sequelize같은 ORM은 MySQL같은 데이터베이스 관리 시스템을 지원한다.
    • 결론은 ORM은 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구다.

     

    - ORM

    • 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 도구다.
    • 프로그래밍 언어의 객체와 관계형 데이터베이스 사이의 중계자(통역자) 역할을 한다.
    • Object Relational Mapping(객체-관계-매핑)의 약자이며, 객체와 데이터베이스의 관계를 매핑해주는 도구다.

     

    - ORM을 사용하는 이유

    • 데이터베이스 접근을 프로그래밍 언어의 관점에서 맞출 수 있다.
    • 객체 간의 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
    • SQL문을 직접 작성하지 않고 엔티티를 객체로 표현할 수 있다.
    • 객체를 통해 간접적으로 데이터베이스를 다룬다.

     

    - ORM의 장점

    • 직관적인 코드(가독성) + 비지니스 로직 집중 가능(생산성)
      • ORM을 이용하면 SQL Query가 아닌 메서드로 데이터를 조작할 수 있다.
      • 이로써 프로그래머가 객체 모델로 프로그래밍하는 것에 더 집중할 수 있도록 도와준다.
      • 각종 객체에 대한 코드를 별도로 작성하기 때문에 가독성을 높여준다.
      • SQL의 절차적이고 순차적인 접근이 아닌 객체 지향적인 접근으로 생산성이 증가한다.
    • 재사용 및 유지보수 편리성이 증가
      • 디자인 패턴을 견고하게 만드는데 유리하다.
      • 독립적으로 작성되었고 해당 객체들을 재활용 할 수 있기 때문이다.
    • DBMS에 대한 중속성 저하
      • 객체 간 관계를 바탕으로 SQL을 자동으로 생성하기 때문에 RDBMS (Relational DataBase Management System)의 데이터 구조와 프로그래밍 언어의 객체 모델 사이의 간격을 좁힌다.
      • 대부분의 ORM 솔루션은 DB에 중속적이지 않다.
      • 프로그래머는 Object에 집중하므로 DBMS를 다루는 큰 작업에도 비교적 작은 리스크와 시간만 소요할 수 있다.

     

    - OPM의 단점

    • 완벽한 ORM만으로 서비스를 구현하기가 어렵다.
      • 사용하기는 편리한데 설계는 신중하게 해야된다.
      • 프로젝트의 복잡성이 커질 경우에는 난이도가 올라간다.
      • 옳지 않게 구현이 되면 일관성이 무너지는 문제점이 생길 수 있다.

     

     

     

    3.  gRPC 프로토콜

     

    1. gRPC란
      • RPC(Remote Procedure Call): 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술이다.

     

    1. 높은 생산성과 가댱한 언어 및 플랫폼 지원
      • gRPC는 서비스와 메시지를 정의하기 위해 Protocol Buffers를 사용한다. 프로토콜 버퍼의 IDL만 정의를 하면 서비스와 메시지에 대한 소스코드가 자동으로 생성되고 데이터를 주고 받을 수 있다.
    2. HTTP/2 기반의 양방향 스트리밍
      • gRPC는 HTTP/2기반으로 통신한다. HTTP/2는 하나의 TCP연결이 여러 개의 양방향 스트리밍을 지원한다.
    3. 성능 이점
      • gRPC는 HTTP/2 레이어 위에서 Protocol Buffers를 사용을 해서 직렬화된 바이트 스트림으로 통신하여 JSON 기반의 통신보다 더 가볍고 통신 속도가 빠르다. 때문에 lsytency 감소와 더 많은 트래픽을 처리할 수 있는 이점을 가졌다.

     

     

     

     

    4. 4주차 2일차 소감 및 부족한 점

     

    숙련 주차 개인 프로젝트를 앞두고, 항해99에서 나눠준 강의를 먼저 듣고 개인 프로젝트를 진행하기 위해서 강의를 먼저 들었다. 강의 중 숙제에 코드도 코드지만, 위에 설명한 것들에 대해서 알아오라는 숙제를 던져줬다.

     

    찾아보면서 몰랐던 것들에 대해서 알게 되었고, 학습이 되어서 매우 좋았던 것 같다. 강의는 완전하게 다 듣는 것이 아닌 개인 프로젝트를 진행하면서 필요한 부분만 찝어서 들으면 더 좋을 것 같아서 그렇게 하기로 했다. 

     

    내일부터 있을 개인 프로젝트에 대해서 두려움도 있지만 열심히 해봐야겠다.

     

Designed by Tistory.