천객만래 [千客萬來] (It has an interminable succession of visitors)

API, 라이브러리, SDK, 프레임워크, 플랫폼


 용 어

 개 념

API

 Application Program Interface로 인터페이스를 의미하며, 서로 다른 목적으로 개발된 software의 특정 기능을 호출하기 위해서 software나 library 기능을 사용할 수 있도록 기능 호출을 하도록 하는 것이다.

대표적인 예로 MS runtime API, java API, google API, facebook API 등이 있다.

SDK

 Android SDK, iOS SDK, Windows SDK, 특정 제품의 SDK 등의 서비스를 제공하기 위한 것이며, 모두 대상이 되는 운영체제나 서비스 기반이 있다.

Library 

필요한 특정 모듈을 호출하여 사용하는 개념이다. 

대표적인 예로 Rad Studio 컨포넌트 라이브러리 등이 있다. 

Framework 

 프레임워크는 소프트웨어를 개발할 때 사용할 수 있는 인터페이스 기반 패키지로 말할 수 있다. 인터페이스란 개발의 basement가 되는 구조와 코드/알고리즘/암호화/데이터베이스 연동 방식의 집합체라고 할 수 있다.

대표적인 프레임워크는 마이크로소프트 사의 MFC, 닷넷(.NET) 프레임워크와 자바의 스프링, 전자정부, 앵귤라 프레임워크, TMSSoftware TMS Package 등이 있다.

 Platform

 특정 장치나 시스템, 서비스 등에서 이를 구성하는 기반이 되는 하드웨어나 소프트웨어 환경, 더 크게는 틀이나 골결을 지칭한다. 또, 서드파티에 의해 개발된 것이 사용자들에 의해 사용/유통될 수 있는 환경/기술 등을 의미한다.

대표적인 플랫폼으로는 Windows, MacOS, Linux와 같은 운영체제, 모바일 안드로이드나 iOS, 엠바카데로 사의 파이어몽키(FireMonkey), 인터넷 포털 서비스의 소셜네트워크 서비스 또는 카카오톡, 라인 등이 있다.

 Docker

 


컴포넌트란 인터페이스를 기본적으로 구현하고 응용 프로그램간의 개체 공유를 가능하게 하는 독립적인 기능을 수행하는 소프트웨어 모듈이다.

컴포넌트(Component, VCL)는 CBD(Component based Development) 개발방법론. 

기업들은 쇼핑바구니, 사용자 인증, 검색엔진, 카탈로그 등 상업적으로 이용 가능한 컴포넌트를 결합하여 그들의 전자상거래 응용프로그램을 개발하는 컴포넌트 기반 개발을 사용한다.



'IT - 개발' 카테고리의 다른 글

API, 라이브러리, SDK, 프레임워크, 플랫폼 - 관한여  (0) 2018.12.16
마이랩뷰 사이트 운영 종료 안내  (0) 2018.10.30
Windows 7 에서 델파이 도움말 사용하기  (0) 2018.10.29
PI System  (0) 2018.10.13
DAS, NAS, SAN 개념  (0) 2018.09.27
IaaS PaaS SaaS  (0) 2018.09.19
Posted by SB패밀리

IaaS PaaS SaaS

IT - 개발 2018.09.19 17:54

Infrastructure as a Service
Platform as a Service
Software as a Service

각 백엔드 서비스에 대해서 간단히 설명할 수 있고
예제를 알고 있어야 한다.

인프라스트럭처 : 닷넷 프레임워크, JDK​


플랫폼 : 가상머신, 데이터베이스 서버


소프트웨어 : 컨데이터, AWS



'IT - 개발' 카테고리의 다른 글

PI System  (0) 2018.10.13
DAS, NAS, SAN 개념  (0) 2018.09.27
IaaS PaaS SaaS  (0) 2018.09.19
2017 가장 멋진 앱 개발 플랫폼 Top 10  (0) 2018.08.13
SQL Server Express Edition DB 용량 제한  (0) 2018.06.14
[웹] 웹퍼블리셔(Web Publisher)란  (0) 2017.12.17
Posted by SB패밀리

[개발/IT] 아키텍쳐, 프레임워크, 플랫폼


- 아키텍처: 소프트웨어의 주요 설계 구조

 


소프트웨어의 주요 특징들을 결정짓는 주요 설계 구조이다.즉, 소프트웨어의 주요 구성 요소 및 구성, 이들간의


주요 인터페이스, 중요 동작 방식 등 소프트웨어의 주요 특징들을 결정짓는 모든 설계 구조를 포함한다.


소프트웨어의 주요 특징을 결정짓고 소프트웨어 개발에 미치는 영향도 매우 커서 소프트웨어 개발에 있어서 가장 중요한


부분이라고 할 수 있다.지원 프로그램, 라이브러리, 언어, 다른 소프트웨어 구성 요소 등과 같이 구체적인 구현을 포함하지 않는다는 점에서


프레임워크나 플랫폼과는 명확히 구분된다.


 


- 프레임워크: 소프트웨어 뼈대 구조


 

프레임워크는 다른 소프트웨어 프로젝트가 개발될 수 있는 뼈대 구조이다.지원 프로그램, 라이브러리, 언어,


다른 소프트웨어 구성 요소들을 엮어 주는 소프트웨어 등을 포함하고 있다.따라서, 플랫폼도 프레임워크의 일종이라고 볼 수 있으며,


MS사에서 닷넷 플랫폼을 닷넷 프레임워크라고 지칭하는 것도 틀린 것이 아니다.또한, UI 프로그램 개발을 위한 부분 만을 떼어내서


프레임워크라고 할 수도 있다.UI 프로그램 개발을 위한 부분 만으로는 완전한 소프트웨어 실행 환경이 되지 않으므로 플랫폼은 아니지만


프레임워크이다.이러한 점에서 프레임워크와 플랫폼은 다른 경우가 많다.


 


- 플랫폼: : 소프트웨어 실행 환경


 

가장 일반적이면서도 명료한 의미는 "소프트웨어가 실행되는 환경"이다.개발 언어나 개발 환경을 플랫폼에


포함시키기도 하지만 이는 부수적 개념 혹은  확장된 개념에 불과하고, 핵심은 "소프트웨어가 실행되는 환경"이다.


각 프로그램은 아무 플랫폼에서나 실행되는 것이 아니고 특정 플랫폼에서만 실행된다.

Posted by SB패밀리

플랫폼(Platform)과 프레임워크(Framework), 아키텍처(Architecture) 개념비교

 

참조 출처: 네이버 지식in

 소프트웨어 분야에서 프레임워크와 라이브러리, 플랫폼, 아키텍쳐를 비교해 보면, 다음과 같다.

 프레임워크: 소프트웨어의 뼈대 구조

 

프레임워크란 특정형태의 소프트웨어 문제를 해결하기 위한 상호 협력하는 클래스들과 인터페이스들의 집합. 즉 소프트웨어 콤포넌트들의 집합을 의미한다. 이는 여러클래스와 컴포넌트로 구성되고 좀더 높은 수준에서 패턴들을 조직화하며 다양한 애플리케이션에서 이용 가능한 범용성(generic)을 가진다.

 프레임워크는 다른 소프트웨어 프로젝트가 개발될 수 있는 뼈대 구조이다. 지원 프로그램, 라이브러리, 언어, 다른 소프트웨어 구성 요소들을 엮어 주는 소프트웨어 등을 포함하고 있다. 따라서, 플랫폼도 프레임워크의 일종이라고 볼 수 있으며, MS사에서 닷넷 플랫폼을 닷넷 프레임워크라고 지칭하는 것도 틀린 것이 아니다.

 또한, UI 프로그램 개발을 위한 부분 만을 떼어내서 프레임워크라고 할 수도 있다. UI 프로그램 개발을 위한 부분 만으로는 완전한 소프트웨어 실행 환경이 되지 않으므로 플랫폼은 아니지만 프레임워크이다. 이러한 점에서 프레임워크와 플랫폼은 다른 경우가 많다.


프레임워크에 대한 내용의 이해를 돕기위해 라이브러리와 비교를 해보자. 라이브러리는 애플리케이션에서 호출할수 있는 함수와 루틴으로 구성되며, 필요한 클래스를 개발자가 불러오는 방식을 지닌다.

 프레임워크와 라이브러리의 관계는 구성적인 측면에서 라이브러리는 함수와 루틴들로 볼 수 있고, 프레임워크는 콤포넌트들로 볼 수 있다. 실제 사용하는 측면에서 라이브러리는 내부에서 불러서 사용하고, 프레임워크는 내부에서 호출이아니라, 자체가 그대로 동작하거나,상속을 받아 재구성하여 동작한다. 이러한 콤포넌트들은 라이브러리를 불러서 사용할 수 있다.


프레임워크(Framework)
  - 잘 정의된 문제도메인 안에서 성공적으로 어플리케이션을 작성하기 위해 필요한 가치 있는 지식을 내포함
  - 비교적 규모가 크고, 복잡하며, 다루기 어려움
  - 어플리케이션 프로그래머는 프레임워크의 인터페이스를 구현하거나 프레임워크 클래스를 상속하여 사용함
  - 프레임워크는 적절한 시기에 어플리케이션을 호출함(흐름에 대한 제어를 프레임워크가 수행)

라이브러리(Library)
  - 어플리케이션 프로그래머가 적절하다고 생각할 때 호출하여 사용함
    (
흐름에 대한 제어는 어플리케이션 코드에서 수행)
  - 라이브러리는 어플리케이션 프로그래머에게 코드작성규칙을 강요하지 않음 
  - 어플리케이션 프로그래머는 코드 작성시 에러 핸들링 정책에 신중을 기해야 함
 

플랫폼: 소프트웨어 실행 환경

 

가장 일반적이면서도 명료한 의미는 "소프트웨어가 실행되는 환경"이다. 개발 언어나 개발 환경을 플랫폼에 포함시키기도 하지만 이는 부수적 개념 혹은  확장된 개념에 불과하고, 핵심은 "소프트웨어가 실행되는 환경"이다.

 각 프로그램은 아무 플랫폼에서나 실행되는 것이 아니고 특정 플랫폼에서만 실행된다. 일반적으로, O/S는 모두 플랫폼이다. Windows는 윈도우즈 프로그램만을 실행시킬 수 있는 플랫폼이고, 리눅스는 리눅스 프로그램만을 실행시킬 수 있는 플랫폼이다.

자바 런타임 환경도 플랫폼이다. 자바 프로그램은 O/S에 대한 종속성은 거의 없고 자바 런타임 환경없이는 실행되지 않으므로 자바 런타임 환경을 주요 플랫폼으로서 필요로 한다. 마찬가지로 닷넷 프로그램도 닷넷 런타임 환경없이는 실행되지 않으므로 닷넷 런타임 환경이 플랫폼이 된다.


아키텍처: 소프트웨어의 주요 설계 구조

 

소프트웨어의 주요 특징들을 결정짓는 주요 설계 구조이다. 즉, 소프트웨어의 주요 구성 요소 및 구성, 이들간의 주요 인터페이스, 중요 동작 방식 등 소프트웨어의 주요 특징들을 결정짓는 모든 설계 구조를 포함한다.

 소프트웨어의 주요 특징을 결정짓고 소프트웨어 개발에 미치는 영향도 매우 커서 소프트웨어 개발에 있어서 가장 중요한 부분이라고 할 수 있다. 지원 프로그램, 라이브러리, 언어, 다른 소프트웨어 구성 요소 등과 같이 구체적인 구현을 포함하지 않는다는 점에서 프레임워크나 플랫폼과는 명확히 구분된다.

 

정리하자면, 이렇게 된다.

 

아키텍쳐 = 소프트웨어 설계 구조

프레임워크 = 소프트웨어 개발 구조  <-- 라이브러리 참조

플랫폼 = 소프트웨어 실행 환경 

Posted by SB패밀리