카테고리 없음

SDK와 API의 차이점은 무엇일까? 추가로 라이브러리와 프레임워크

긴모양 2020. 12. 21. 21:47

 

 

 

API란?

- Application Program, Interface 
api에 대해서 두가지 방향으로 얘기를 해보겠다. 첫번째는 정말 큰 범위에서의 api, 두번째는 써볼법한 api
api는 어플리케이션(코드를 통해 돌아가는 프로그램 덩어리) 프로그래밍이다. 옛날에는 하나만 있어도 괜찮았지만 다른 프로그램을 불러야 하는 경우가 생기면서 방법을 고민하다 인터페이스라는 것을 만들게 된다.

인터페이스를 통해서 정보를 전달하고 (실제로는 굉장히 광범위 한데, 윈도우에서 파일을 더블 클릭하면 파일이 열리는 것도 이벤트가 발생해 운영체제를 통해 제공하는 api. 프로그램이 있고 인터페이스를 만들어둔다. 한개의 프로그램 안에 여래개의 인터페이스가 존재 할 수 있다. = 여러개를 둘 수 있다. 이렇게 누르면 이렇게 줘라는 형식의 일종의 규칙, 펑션, 메소드의 실행이다.

-

응용 프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 것.
운영 체제가 응용 프로그램을 위해 제공하는 함수의 집합 응용 프로그램과 디바이스를 연결해주는 역할을 한다.
누구나 쉽게 데이터 베이스나 기능을 사용할 수 있도록 모듈화하여 만들어 두었다. 
응용 프로그램에서 데이터를 주고 받기 위한 방법을 의미한다.

포털을 이용해 내가 원하는 정보들을 잘 받아올 수 있는가 없는가이다.

두번째, 일반적으로 현대사회에서 (실제로 사용하는 api) 클라이언트 = 호출 / server = 제공
클라이언트가 서버에게 요청을 하면 서버가 응답을 주는 요청 응답의 관계를 가진다.
이는 프로그램과 프로그램 상에서도 정보를 받는다. 실제로는 클라이언트가 요청을 하는 사람보다
사람이 있고 클라이언트는 따로있다 (웹, 앱이 된다)
아까 인터페이스라는게 있었는데 인터페이스는 어디에 위치 해있어야하는가? server에 있다!
api는 서버에서 구축을 해요! 클라이언트는 server api를 사용하는 고객이고 
클라이언트가 api를 통해서 server에게 요청을 받고 응답을 한다.

뭘 가지고 있는지?
실제로 어떤건지 어떤 동작을 하는지 알려면 server가 어떤 걸 하는지 알아야한다.
역할은 다양한데 대부분의 server는 CreateReadUpdateDelete 네가지의 동작 프로그램이라는게 정보나 그런거를 다루잖아요?
채팅 정보, 회원가입 정보 서버가 resource(자원)을 관리(가지고있다)한다. 
자원을 조정하기 위한 네가지 행위라고 생각하자! 보통 DB 거기에서 제공하는 것이 이 네가지말고 없다. 서버도 뭔가 궁극적으로는 관리를 위한거고 api도 자원을 사용자를 생성할 거고, 사용자의 현재 정보 조회, 사용자의 정보를 수정할 수도 있죠, 삭제 할 수도 있겠죠. 기본적으로 이 행위를 api로써 제공을 해준다. 이거를 가지고, 이런 말을 써요 REST API 네가지를 동작시키기 위한 표준을 정의한 것.
서버는 네가지 행위를 하고 클라이언트에서 알아야하는 것은 자원을 읽고 쓰고 삭제하고 추가하는 행위를 요청한다.

우편번호를 했으니까 생각해보면 조회기능 하나 밖에 없다. 이 주소에 맞는 정보를 알려줘! 요청을 하면 주소데이터를 통해서 주소를 찾아서 준다.

api는 일종의 설명서다. 
일반적으로 통신(http)을 통해서 얘기를 하는데, 규약을 통해서 알 수 있는 것. 요청을 할 때는 url같은걸로 보내서 tistory/manage
(api를 제공하는 회사들은 http를 제공한다. 쿼리스트링이라는 틀이 있는데 거기로 데이터를 보내라!)
정확히 포스트맨 같은거 하면 Post get put delete와 1:1 매칭을 한다. 매칭 안 하게도 쓸 수 있는데 표준 처럼 약속을 한 것이다. 결론은 같다고 생각하면 되는데, 만약 서버 개발자가 임의로 변경 할 수 있다(기능이 달라질 수 있다.)

서버 개발자들이 쓴 문서가 있으니까 그 문서를 잘 읽고 연습을 해볼 필요가 있을거다. 

/ 만들어진 데이터를 주고 받는다. = "통신"

 

 

SDK란?

- Software Development Kit 직역하면 개발자를 위해 제공하는 도구들
일반적으로 소프트웨어 기술자가 사용하여 특정한 소프트웨어 꾸러미를 말한다.
소프트 웨어를 개발하기 위한 공구 박스? 말 그대로 키트
내부에는 API와 개발에 필요한 도구들, 샘플 코드, 관련 문서등이 들어있는 개발도구의 집합이다.

응용 프로그램을 만들 수 있도록 해주는 도구이다. 
안드로이드 SDK, IOS SDK, JAVA SDK와 같은 다양한 종류의 SDK를 제공한다. 소프트웨어 개발 도구

 SDK는 예시를 드는게 가장 좋을 것 같은데 크게 보면 라이브러리인데, 기업 같이 큰 곳에서는 라이브러리도
여러개 제공하고 프레임 워크도 제공할 수 있고, 자체적으로 하는 것도 되게 많다.
라이브러리의 묶음이다. 아마 보통은 firebaseSDK (서버의 기능을 사용하기 위한 라이브러리) '통신기능'
내부적으로는 api통신을 요청하고 object라던지 class로 제공이 된다.
 

 

 

/

Frame work가 라이브러리의 한 종류이다. 

추가로 Frame Work는?
-> 개념이 어렵다. 보통 개발자 면접에서 많이 나온다. 구분하기가 어렵기 때문에,
최대한 쉽게 말하면? frame work는 사용자가 맞춰야한다. 내가 그거를 이미 짜여진 틀 안에서
하면은 지가 알아서 돌아간다. 뷰 컨트롤러가 알아서 돌아가고 본인이 알아서 돌아간다.
부분부분적으로 사용자가 개입 할 수 있다. 제어권을 뺏긴다 프로그램에게
(가장 큰 목적은 복잡한 기능을 미리 만들어 놓은거 ios운영체제가 있으니, 
실행하기 위한 앱을 실행하기 위해서 모든 코드를 직접 다 짜야한다. ui view controller
그것을 그냥 미리 짜놓고 미리 다 실행되게 하는 것.) 각각의 프레임 워크가 굉장히 복잡해서 
모든 걸 알 정도로가 되면. 

라이브러리란?
-> 범위가 너무 커서! 그냥 음.. 보통 개발을 하면 ios는 내부적으로 복잡한 애기때문에
실제로 프로그램은 한줄로 이뤄진 메소드이다. 예전에 한번 절차지향(쭉 나열하는)에 대해서
라이브러리는? 다른 사람이 만든 코드를 재사용 가능한 프로그램 덩어리? button? checkBox
기능 하나하나 - 사용자 정의 프로그램
!프로그램으로 구성된 사용자가 가져다 쓰는 것, 필요없으면 안써도 된다.
머테리얼 UI같은 것도 라이브러리인가 = Yes!
-> 특징 언어별로 다르다. 같은 기능이여도 언어별로 제공되는 것이 다르다. 확장해서 사용하는 것이기에
'user defind' 라이브러리 

여러가지의 유용한 함수를 담아두는 곳 우리가 원할 때 마음대로 사용할 수 있는 도구에 가깝다.
직접 라이브러리에 요청해서 결과를 받아온다. 질문과 응답 결과 처리를 내 코드 내에서 처리할 수 있다.

라이브러리 : 내 코드가 호출함 
프레임 워크 : 내 코드가 호출당함

내가 코드를 컨트롤 하는 것 - 라이브러리 쉽게 대체 가능하다. 시간절약

누군가의 규칙에 따라 코딩하는 것 - 프레임워크 

 

프레임워크랑 라이브러리라는 단어는 익숙하지만 개념이 다르다. 

 

SDK와 API의 차이점
SDK는 소프트웨어를 개발하기 위한 실제 코드가 있으며 사용자가 사용할 수 있다.
API는 필요한 정보만 제공하며 사용은 사용자의 몫이다. SDK > API > 라이브러리

medium.com/the-era-of-apis/api-vs-sdk-whats-the-difference-e9ec58434a8a

 

API vs SDK (What’s the Difference)

Application Programming Interfaces (APIs) and Software Development Kits (SDKs) both have different roles in the software development…

medium.com

code.i-harness.com/ko-kr/q/cbccb

 

플랫폼 - 포토샵 api

API가 아닌 SDK의 차이점을 비 개발자에게 설명하려고합니다. 상업용 지문 인식 소프트웨어 공급 업체가 왜 SDK를 제공하지 않을 지에 대해 설명 할 필요가 있습니다. 장치 공급 업체와 소프트웨어

code.i-harness.com

brunch.co.kr/@cysstory/115

 

API가 뭔가요? (비개발자용)

비개발자를 위한 정보공유 | 현재 내가 일하고 있는 '티포트(T PORT)'에서는 숙박 분야의 B2B 사업을 진행하고 있다. 우리의 사업 분야는 크게 2가지로 구분할 수 있는데 하나는 호텔, 펜션, 게스트

brunch.co.kr

blog.gaerae.com/2016/11/what-is-library-and-framework-and-architecture-and-platform.html

 

[개발용어] 라이브러리, 프레임워크, 아키텍처, 플래폼이란?

개발 입문자나 혹은 현업 개발자이지만 정의를 내리기 곤란한 라이브러리, 프레임워크, 아키텍처, 플랫폼에 대한 개인적인 생각을 정리했습니다.

blog.gaerae.com

velog.io/@tjdud0123/API-vs-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-vs-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC

 

API vs 라이브러리 vs 프레임워크

api, 라이브러리, 프레임워크의 차이점을 알아보자

velog.io

www.youtube.com/watch?v=t9ccIykXTCM