[iOS] 네트워크 통신과 API

leeyoungwoozz·2020년 12월 4일
0

iOS

목록 보기
2/11

네트워크 통신과 API

우리는 앱에 필요한 정보를 하나씩 등록해주기도 합니다. 하지만 대부분 데이터 파일을 따로 구성하여 앱 내부에 둡니다. 그런데 이럴 경우 잦은 앱 업데이트가 필요하게 되서 서버에 데이터 파일을 보관하고 필요할 때마다 가져가는 식의 통신을 많이 사용합니다.

그리고 아래와 같이 네트워크 통신의 종류는 다양합니다.


네트워크 통신의 종류

앱과 서버 간 네트워크 통신이 이루어지는 방식은 크게 두 가지로 구분해 볼 수 있습니다. 하나는 TCP/UDP를 사용하는 소켓 방식의 연결성 통신, 또 다른 하나는 HTTP, HTTPS, SMTP 등의 프로토콜을 이용한 비연결성 통신입니다.


소켓 방식의 연결 지향 통신

전구가 결합하는 소켓의 개념을 따온 소켓 방식의 연결은 일단 앱과 서버가 연결되면 한쪽에서 명시적으로 끊을 때까지 게속해서 연결을 유지하는 방식입니다.

그래서 연결이 이루어진 단계, 연결이 유지되고 있는 단계, 연결이 종료된 단계 등으로 연결 상태를 각각 구분할 수 있어서 각 단계에 따라 적절하게 대응하는 방식으로 프로그래밍 할 수 있습니다.

**장점 ** : 연결을 종료하기 전까지는 한번 연결된 통신을 계속 유지하므로 재연결할 필요 없이 원하는 만크 빠르게 메시지를 주고받을 수 있다.

단점 : 연결 정보를 유지하기 위해 네트워크 대역을 많이 소모하고, 서버 부하도 크다는 단점 때문에 네트워크 환경이 고르지 않은 모바일 서비스에서는 메신저나 화상 통화, RPG 게임 등에서만 제한적으로 사용하기도 한다.

소켓 방식의 두가지 종류 : 1) TCP 연결 2) UDP 연결

  1. TCP 연결의 경우 데이터 유실을 방지하고 완전한 전송을 보장하지만 상대적으로 덜 빠릅니다.
  2. 또 다른 하나는 데이터의 완전한 전송을 보장하지 않지만 상대적으로 더 빠른 UDP 연결입니다.

비연결 지향 통신

비연결 지향 통신은 TCP나 UDP를 이용한 소켓방식과는 달리, HTTP 등의 프로토콜을 사용하여 메시지를 주고받는 방식을 가리킵니다. HTTP/HTTPS 프로토콜이 있는데, 웹 서비스에서 주로 사용된다.

비연결이여서 아예 연결을 하지 않는다는 것이 아니라, 연결을 유지하지 않는 다는 것 뿐이다.
단점 : 매번 요청할 때마다 연결해야 하므로 소켓 방식에 비해 상대적으로 데이터를 주고받는 속도에 제약이 있다.

장점 : 필요할 때만 연결하여 요청을 처리한 후 연결을 종료하므로 필요 없는 네트워크 대역 소모를 줄일 수 있고, 서버 부하도 낮출 수 있어서 모바일 서비스에서도 많이 사용된다.

동일한 HTTP/HTTPS 프로토콜을 사용하지만 일반 웹 페이지와 달리, 데이터만을 주고받을 수 있도록 설계된 모듈을 웹 서비스(Web Service)라고 부른다.

웹서비스의 종류

  1. 아키텍처 구조에 따른 SOAP, RESTful 방식
  2. 데이터 타입에 따른 XML, JSON 방식

SOAP 방식

일반적으로 널리 알려진 HTTP, HTTPS SMTP 등의 프로토콜을 통해 양쪽에서 XML 형태의 메시지를 주고받도록 구현된 프로토콜이다. SOAP는 웹 서비스에서 메시지를 전달할 때 몇 가지 형태의 메시지 패턴 중에서 원격 프로시저 호출이라고 불리는 클라이언트-서버 구조의 메시지 패턴을 많이 사용하며, 이때 통신 구조는 Envelope/Header/Body의 세 가지 영역으로 구분할 수 있습니다.

간단하게 SOAP 방식의 네트워크 통신이 가지는 장점은 아래와 같다.

  1. SOAP를 사용한 HTTP는 기준 원격 기술들과 달리 프락시나 방화벽과 관계없이 쉽게 통신할 수 있다.
  2. SOAP가 사용하는 표준 전송 프로토콜은 HTTP이지만 이외에도 사용할 수 있는 프로토콜이 다양하다.
  3. 플랫폼 독립적인 통신이므로 시스템이 바뀌거나 이기종 플랫폼 간의 데이터 통신이 편리하다.
  4. 프로그래밍 언어에 종속되지 않는다.
  5. 매우 간단하고 확장이 용이하다.

반면에 SOAP는 XML 포맷을 사용하므로 CORBA 같은 미들웨어 기술과 비교해볼 때 상대적으로 느립니다. 물론 전송할 메시지가 비교적 큰 양일때만 이슈가 되므로 일반적으로 데이터 교환에는 크게 문제가 되지 않는다.


RESTful 방식

RESTful의 근간이 되는 REST(Representational State Transfer)는 (World Wide Web, WWW)과 같은 분산 하이퍼 미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식입니다. 엄격한 기준에서 봤을 때 REST는 실질적인 네트워크 프로토콜은 아니다. 웹 형식을 빌어 데이터를 전송하되, SOAP나 쿠키 등 별도의 전송 프로토콜 없이 전송하기 위해 만들어진 간단한 형식의 인터페이스를 말한다.

정말로 간단해서 Envelpe/Header/Body 메시지 구조를 구현해야 하는 SOAP와 달리 REST는 HTTP 프로토콜을 바탕으로 필요한 데이터를 별도의 규약 없이 주고받기만 하면 됩니다. 이런 REST 원리를 따라 구현된 시스템을 RESTful 이라는 용어로 지칭합니다.

RESTful 시스템은 서버에게 요청하려는 정보를 URL를 통해서 타나탭니다. 요청 정보는 URL 단위마다 슬래시(/)로 구분되는데, 예를 들어 127.0.0.1 아이피에 해당하는 서버에서 영화 정보를 얻고자 할때는 다음과 같은 형식으로 URI를 구성하면 됩니다.

http://127.0.0.1/movie

물론 서버측에서 제공하는 웹 서비스나 콘텐츠의 성격에 따라 URI 구성은 모두 달라질 수 있습니다. 주고받는 데이터의 형식도 달리집니다. 그래서 먼저 서버에서 요구하는 형식에 따라 요청 규격을 정확하게 맞춰야 합니다.

위 테이블은 서울시 열린 데이터광장에서 제공하는 RESTful API 명세이다.

profile
App Developer Preparedness

0개의 댓글