본문 바로가기

SAP

OData

OData(Open Data Protocol)

클라이언트와 서버 간의 데이터 통신을 위한 표준화된 프로토콜

웹 서비스를 위한 데이터 모델, 메타 데이터, 쿼리 및 데이터 수정 기능을 제공하여, 클라이언트 애플리케이션이 서버에서 데이터를 쉽게 가져오고 조작할수 있도록 도와줌.

OData는 REST(Representational State Transfer) 아키텍처 스타일을 따르며, HTTP(S)를 통해 통신하며, XML 또는 JSON과 같은 표준 데이터 형식을 사용함

 

 

OData 주요 기술특징

1) RESTful 아키텍처: OData는 RESTful 아키텍처를 기반으로 함

2) 표준화된 프로토콜: OData는 SQL과 유사한 쿼리를 활용하여 데이터를 조회/수정 할 수 있는 HTTP, ATOM, JSON 기반의 ISO/IEC가 승인한 표준화된 프로토콜 로서,

데이터를 통신하는 데 사용되는 표준화된 메시지 형식 및 프로토콜을 제공함.

이를 통해 서로 다른 플랫폼과 언어 간의 데이터 통신을 표준화하고 상호 운용성을 확보할 수 있음.

3) 데이터 모델링: OData는 데이터를 표현하기 위한 표준화된 데이터 모델링을 제공함. OData의 데이터 모델은 간단하고 확장 가능하며, 엔더디, 속성, 관계 등의 개념을 사용하여 데이터를 구조화 함.

이를 통해 데이터를 효율적으로 표현하고 처리 할 수 있음.

4) 메타 데이터 및 데이터 디스커버리: OData는 메타 데이터를 통해 데이터 모델을 설명하여 데이터 디스커버리를 지원한다. 메타 데이터는 데이터 모델의 구조와 데이터에 대한 설명을 포함하며, 클라이언트는 이를 통해 데이터 모델을 이해하고 데이터를 조작할 수 있음.

5) 쿼리 및 필터링: OData는 강력한 쿼리 및 필터링 기능을 제공함. 클라이언트는 URI를 통해 데이터를 쿼리하고 데이터를 필터링 하여 원하는 결과를 얻을 수 있음. OData의 쿼리 및 필터링 기능은 데이터를 효율적으로 처리하고 데이터베이스나 서비스에 부하를 줄이는 데 도움을 줌

6) 다양한 클라이언트 및 플랫폼 지원: OData는 다양한 클라이언트 및 플랫폼에서 사용될 수 있음. 웹 어플리케이션, 모바일 어플리케이션, 데스크톱 애플리케이션 등 다양한 클라이언트와 플랫폼에서 OData를 사용하여 데이터를 송수신할 수 있음. OData는 다양한 언어와 플랫폼에서 지원되는 프로토콜로 Java, NET, JS 등 다양한 언어 및 프레임 워크에서 odATA를 활용하여 데이터를 통신할 수 있음.

7) CRUD(Create, Read, Update, Delete) 작업: OData는 CRUD 작업을 지원함. OData를 통해 데이터를 생성, 읽기, 갱신, 삭제하는 작업을 수행할수 있음. 이를 통해 클라이언트는 서버의 데이터를 조작할 수 있고, 서버는 클라이언트의 요청에 따라 데이터를 처리할 수 있음.

8)보안: ODta는 보안 기능을 제공함. 인증, 인가, 암호화 등의 보안 기능을 통해 데이터의 안전한 송수신을 보장함. OData는 HTTPS를 통한 암호화된 통신을 지원하며, 다양한 인증 및 인가 매커니즘을 지원하여 보안 요구사항을 충족할 수 있음.

9) 확장성: OData는 확장 가능한 프로토콜로서, 새로운 데이터 모델이나 기능을 추가할 수 있음. OData는 확장성을 고려하여 설계 되어 있어, 기존의 데이터 모델이나 기능을 확장하거나 새로운 기능을 추가할 수 있음.

10) 문서화 및 커뮤니티 : OData는 다양한 문서화 자료와 커뮤니티가 존재함. OData는 공식 문서, 예제 코드, 커뮤니티 포럼 등 다양한 자료를 제공하여 개발자들이 OData를 쉽게 학습하고 활용할 수 있도록 지원함.

 

OData Architecture

 

OData(Open Data Protocol)는 

REST 기반의 웹 프로토콜로,

데이터를 표준화된 방식으로 노출하고,

클라이언트와 서버 간의 데이터 통신을 가능하게 하는 아키텍처를 가지고 있음.

 

OData 아키텍처는 다음과 같은 주요 요소로 구성되어 있음.

1. 클라이언트 : OData를 활용하여 데이터를 요청하고, 데이터를 사용하는 응용 프로그램 또는 클라이언트 애플리케이션을 의미함.

클라이언트는 HTTP를 통해 OData 서비스의 엔드 포인트에 요청을 보내고, 응답으로부터 데이터를 수신하여 활용할 수 있음.

2. 서버 : OData 서비스를 제공하는 웹 서버 또는 데이터 서비스를 의미함. 서버는 클라이언트의 OData 요청을 수신하고, 데이터를 처리하여 응답을 생성하여 클라이언트에게 전송함.

3. OData 서비스 : OData 서비스는 클라이언트와 서버 간의 데이터 통신을 담당하는 단위임. OData 서비스는 OData 프로토콜에 따라 데이터를 노출하고, 클라이언트가 데이터를 요청하거나 조작할 수 있는 인터페이스를 제공함.

4.데이터 모델: OData 서비스에서 노출되는 데이터의 구조를 정의하는 모델임. 데이터 모델은 개체(Entity), 개체 집합(Entity Set), 관계 (Relationship) 등을 포함하여, 클라이언트는 데이터 모델에 따라 데이터를 요청하고 조작할 수 있음.

5. URI(Uniform Resource Identifier) : OData에서는 URI를 통해 데이터르 식벽하고 접근함. URI는 OData 서비스의 엔드 포인트에 요청을 보내고, 데이터를 조회하거나 조작하는 데 사용됨.

6. HTTP(Hypertext Transfer Protocol): OData는 HTTP를 기반으로 데이터를 통신하며, HTTP 메서드(GET,POST,PUT,DELETE 등)를 사용하여 CRUD 작업을 수행함. HTTP 헤더, 상태 코드, 메시지 등을 활용하여 클라이언트와 서버 간의 통신을 처리함.

7. 데이터 포맷 :OData는 다양한 데이터 포맷을 지원함. 대표적으로 JSON,ATON(XML)등이 있음. 클라이언트와 서버는 데이터 포맷을 협의하여 데이터를 주고 받음.

 

 

 

============================================================================================

 

 OData

Open Data Protocol의 약어로 프로토콜은 모두가 지켜야할 일종의 규칙임.

OData 인터페이스는 개방형 표준으로 어떠한 어플리케이션, 프로그램, 소프트웨어, 장치에서든 상관없이

SAP에 HTTP(s) 프로토콜로 연결할 수 있고 데이터를 xml문서로 다룰 수 ( 읽고, 쓰고, 수정하고, 해석하기) 있음.

이 프로토콜이 http 기반이기 떄문에 http를 지원한다면 어떠한 프로그래밍 언어에도 사용할 수 있음.

 

OData는 기존 소프트웨어가 가지고 있는 폐쇄적인 데이터를 외부로 노출하고 공유하도록 도와주는 웹 프로토콜임.

OData 프로토콜은 json, atom/xml 처럼 널리 쓰이는 데이터 포맷으로 표현하도록 지원하며

OData르 사용하여 개발하면 크로스 플랫폼(여러 환경에서 공통으로 이용가능한) 형태의 웹 과 모바일 어플리케이션을 만들 수 있음.

 

OData를 사용하면, 고수준의 데이터 통합을 이루고 현재의 복잡한 비즈니스가 요구하는 여러 환경에서 공통으로 이용가능한 상호 운용성을 가지는 서비스를 개발할 수 있음.

 

SAP Netweaver Gateway

아래 그림은 sap application  계층에서 sap netweaver gateway 의 위치를 나타냄.

sap netweaver gateway는

외부에서 SAP를 들여다보고

SAP와 데이터르 주고/받을 수 있는 일종의 창문임.

 

외부에서 HTTP(S)메세지를 보내면 SAP는 OData로 응답함.

OData는 인터넷을 통해 데이터를 교환할 수 있는 공개 표준임.

 

SAP Netweaver Gateway는 Odata 서비스를 사용하면 외부에서 연결된 장치, 플랫폼 등의 환경에 sap 의 데이터르 제공함.

sap  netweaver gateway는 프로그래밍 언어에 상관없고 sap 개발 지식도 많이 필요 없는 sap 비즈니스 데이터 연결 서비스를 제공함.

 

 

 

 

클라이언트는 쿼리를 보내고 받은 데이터를 다루는 형태로 서비스를 소비한다는 관점에서 OData 서비스의 '소비자(Consumer)'라고 불림. 비슷하게 서버는 서비스를 제공한다는 관점에서 OData 서비스의 '공급자(Producer)'라고 불림.

 

OData 이전에는 SAP 외부의 개발자 들은 SAP에 접근하기 위해 RFC/BAPI 또는 웹서비스를 사용했음.

이런 경우 외부 개발자(웹 개발자)는 SAP와 주고 받는 데이터의 구조를 미리 알고 있어야 함(SAP 외부 개발자은 SAP 시스템의 내부 작동원리에 대한 기본 지식이 필요했었음)O

 

개발자 관점에서 OData의 장점

Odata 인터페이스는 XML 또는 json 을 사용하여 표현함. 두 포맷 모두 웹에서 정보 전송을 위해 널리 사용하며 평범한 문자 기반의 프로토콜임.

Odata 메세지는 추가 설명이 필요없는 자기설명적 데이터임. 그러므로 SAP 외부 개발자가 ABAP이나 SAP을 몰라도 OData 메세지의 내용을 해석하는데 문제가 없음.

서버는 데이터를 제공하는 역할을 하고 클라이언트는 서비스를 호출하여 응답받은 자원을 다루는 역할을 함.

서버는 자원을 조회하도록 서비스를 제공함. 클라이언트 또는 sap 외부 개발자는 원하는 데이터를 제공하는 서비스를 호출하기만 하면 됨.

Odata의 출현으로 sap와 sap 외부 웹 개발자 사이의 소통 장애가 사라짐. odata를 사용할때 비용도 들지 않고 라이센스 문제도 없음.

 

왜 OData를 웹의 ODBC(Open Database Connectivity)라고 할까?

ODBC는 DBMS나 OS 종류와 무관하게 DBMS에 접속하는 표준 API 임.

어플리케이션 계층과 DBMS 사이에는 어플리케이션에서 받은 쿼리를 각 DBMS에 맞게 변환해주는 추가 드라이버가 있어 가능함.

이와 비슷하게 OData는 공급자와 소비자 사이에 미들웨어 같은 역할을 함.

OData는 데이터를 소비(조회)하는 규격화된 방법이 있고

공급자(sap 또는 non sap) 종류에 무관하게 동작하는 것이 odbc를 닯았음.

 

 

SAP에게 OData가 필요한 이유는?

OData를 도입하기 전에는 '1대1 독립적 연결'방식으로 

SAP와 NON SAP 간 통합을 이룸.

만약 하나의 어플리케이션이 두개의 다른 플랫폼에서 사용된다면 SAP에는 두개의 독립된 설계가 필요했음.

(하나의 SAP DATA가 두개의 다른 플랫폼에서 사용된다면)

 

SAP로 부터 동일한 데이터를 가져가는 데도 여려 단말마다 각각의 인터페이스를 만들어 쓰고 있음

 

1대1의 독립적 연결방식의 대안으로 '하나의 데이터 모델 -> 하나의 API -> 여러 단말 지원'  QKDTLRDL DltDMA.

 

 

[OData로의 전환]

 

 

Data Model -> API -> Multiple End-User Experiences

OData 방식은 한가지 기술로 모든 환경, 모든 플랫폼을 지원함.

 

OData의 확장성이라는 특징이 SAP가 OData를 선택한 주요 요인 중 하나임.

SAP에서는 값을 표시할떄 참조 필드가 쌍으로 구성되는 경우가 있음. 예를 들어 통화의 경우, 금액과 통화 키 가 그러함.

OData의 확장성은 이런 제약사항을 지원함.

 

HTTP(Hyper-Text-Transfer Protocol)

HTTP는 클라이언트 서버 구조 기반의 기술임.

브라우저는 클라이언트로 HTTP 요청을 보내고 웹서버는 서버로 브라우저에게 응답을 보냄.

브라우저 -  클라이언트 - 서버 - 부라우저

HTTP는 클라이언트와 서버 사이에 '무엇'을 전송하는 지를 정의하고 있음.

데이터 패킷이 어떻게 전송되는 지는 TCP/IP 프로토콜에서 다룸.

 

What is stateless?

웹 서버는 HTTP 요청을 받고 그에 대해 응답을 보낸 후 관련 내용을 모두 잊어버림. 웹 서버는 이전에 요청 받았던 내용을 보관하거나 기억할 필요가 없음. 이런 방식은 'stateless' 라고 함.

 

what is RESTfull?

OData는 REST 기반 기술임. REST는 REpresentational State Transfer 의 약어임.

REST는 단말간 통신을 위한 간결하고 가벼운 아키텍처 유형임.

RPC(Remote Procedure Calls)와 웹 서비스의 대안으로 사용함.

RPC나 SOAP은 동작 기반인데 반해 REST는 자원 기반 기술임.

 

동작이 아니라 자원을 기준으로 하기에 REST 서비스라고 부름.

클라이언트와 서버 사이에 모든 통신은 HTTP 프로토콜 상에서 URI(Unified Resource Identifier)를 사용함.

URI는 바로 자원을 나타냄.

 

 

REST란?

Reresentational State Transfer의 약자임

웹 어플리케이션의 어떤 상태(정보)를 전송하는 표현 방식

웹의 장점을 최대한 활용할 수 있는 아키텍처로 REST가 발표됨.

 

이미 만들어져 있는 HTTP 프로토콜의 고유한 기능을 통해 가볍고 단순하고 빠른 통신을 하자는 취지.

 

REST를 한마디로 정의하면, HTTP라는 프로토콜을 이용해서 WEB에서 제공하는 모든 자원들을 하나하나 가리킬 수 있는 고유한 주소(URI)를 이용해서 HTTP Method를 통해 작업(CRUD)을 처리 하는 방식임.

 

웹에서의 통신이라면 HTTP 프로토콜을 이용한 통신임

1. 클라이언트 웹 브라우저에서 주소(URI)를 입력함

2. 웹 브라우저가 주소(URI)를 이용해 HTTP Request 메세지를 보냄

3. 웹서버는 주소(URI)와 매핑된 서버 내 문서나 프로그램을 찾아서 작업(CRUD)를 처리함

4. 처리 후에 웹 서버에서는 HTTP response 메시지를 클라이언트 웹 브라우저로 보냄

5. 클라이언트 웹 브라우저는 받은 메세지를 웹 브라우저에 맞게 변환해서 표시함.

 

 

* http에서 클라이언트는 웹 브라우저(익스플로러, 크롬, 파이어폭스, 사파리 등) 뿐만 아니라 모바일 기기의 앱이나 또 다른 웹 서버 에서도 HTTP 프로토콜의 주소(URI)를 이용할 수 있다면 어떤 것도 가능함.

 

REST 구성요소

자원(Resource) : 웹서버가 관리하는 모든 것들. 자원은 URI를 통해 고유한 주소로 지정해서 식별할 수 있음

자원 조작 (VERB) : HTTP 프로토콜에 있는 Method(매소드)를 통해 CRUD 처리 함. 

표현( Representation) : 클라이언트에서 자원의 상태(정보)를 조작하는 요청을 하고 서버에서 요청 처리를 하고 응담을 보냄. 자원은 보통 TEXT, JSON, XML 등 HTTP 헤더에 지정된 MIME 타입(Content-Type) 중의 하나를 표현함.

 

*rest와 rest api 용어는 어떤 특정 프로그램을 가리키는 게 아니라 개념일 뿐임. rest api 개념에 맞는 https 매소드를 이용해서 rest 개념에 맞게 처리하는 것임.

 

그렇다면 REST API란 무엇인가?

API는 Application Program Interface의 약자 이며,

컴퓨터에서 처리할 수 있는 기능들을 모아둔것.

 

예를 들어 화면에 글자를 출력하는 방법이라면 

c언어에서는 print("Hello RESTn"), 자바 언어에서는 System.out.println('Hello REST")

이렇게 화면에 글자를 출력하는 API를 만든 개발 언어마다 사용법이 다름.

 

REST API 역시 컴퓨터에서 기능을 수행하는 것인데, 다른 API와의 차이점은 API를 실행하는 컴퓨터(클라이언트)에서 기능을 처리하는 게 아니고 HTTP 프로토콜의 URI 주소를 이용하여 서버의 기능을 처리하게 하는 것임.

 

REST API에서 처리할 수 있는 기능을 매소드 라고 함.

REST는 Web의 통신 규약인 http 프로토콜을 이용하기 떄문에 http에 존재하는 매소드를 그대로 사용함.

 

HTTP Verb REST API Method(CRUD) 설명
POST Create 생성하기
GET Read 읽기
PUT Update 전체 변경하기
PATCH Update 부분 변경하기
DELETE Delete  삭제하

 

 

RESTfull이란 말은

REST라는 아키텍처 개념을 그대로 적용해서

웹 서버를 구성하고 웹 서비스를 하는 것을 말함.

 

웹서버가 RESTfull 하다라는 말은 REST API를 이용할 수 있는 것임.

웹서버에 구성된 주소(URI)들만 알고 있다면

어떤 클라이언트 라도 해당 웹 서버를 이용할 수 있음.

 

주소를 가지고 클라이언트에서 호출하는 방법은 다양함

 

restfull 지원하는 지 rest api를 사용할 수 있냐는 문의가 올 때, 

웹(http)을 사용하지 않기 때문에 restful하지 못하다고 답변하기도 함.

 

rest는 다른 통신 프로그램에 비해 주소(URL)만 호출하면 되기 때문에 접근성이 뛰어남. 클라우드 웹 서비스들은 대부분 RESTFULL을 기본으로 서비스 되고 있음.

'SAP' 카테고리의 다른 글

Unified Way for User Management & Common Identity  (0) 2024.11.18
MFA(Multi-Factor Authentication)  (0) 2024.11.18
ETL  (1) 2024.01.02
[WIP]CLASS-분류 시스템 구조  (0) 2023.11.02
[WIP]CLASS-분류 시스템 구조  (1) 2023.11.02