|
프레임워크와 플랫폼의 차이
Section 0 프레임워크와 플랫폼
※프레임워크와 플랫폼
◆프레임워크
•소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적
기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는
소프트웨어 환경을 말한다.
◆플랫폼
•특정 장치나 시스템 등에서 이를 구성하는 기초가 되는 틀 또는 골격을 지칭하는 용어.
•오프라인의 가게가 될 수도 있고 매장일 수도 있고, 온라인의 판매 시스템인 쇼핑몰, 카페, 블로그, 다양한 SNS, 소셜미디어, 라이브 쇼핑몰 등 무엇인가(컨텐츠 상품 등)를 알리고 팔고, 살 수 있는 툴(시스템)을 통틀어 플랫폼이라고 한다.
Ⅰ 프레임워크에 대해 알아본다.
Ⅱ 플랫폼에 대해 알아본다.
Ⅲ 프레임워크와 플랫폼의 차이점을 알아본다.
Section 1 프레임워크란?
※프레임워크의 개념
• 프레임워크란 단어처럼 많이 쓰이면서도 애매한 단어가 없는 것 같다.
• 일단 구글링을 해 본 결과 다음과 같은 정의를 찾을 수 있었다.
• GoF의 디자인 패턴으로 유명한 랄프 존슨(Ralph Johnson) 교수는 프레임워크를 “소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게 끔 일련의 협업화된 형태로
클래스들을 제공하는 것” 이라고 정의하였다.
• 프레임워크는 라이브러리와 달리 애플리케이션의 틀과 구조를 결정할 뿐 아니라, 그 위에 개발된
개발자의 코드를 제어한다.
• 프레임워크는 구체적이며 확장 가능한 기반 코드를 가지고 있으며, 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있다.
• 사용자(프로그래머)와 실제 구현하고자 하는 기능 사이에, 사용자로 하여금 구현하고자 하는 기능을
쉽게 쉽게 제공해주는 중간 계층이란 면에 있어서 라이브러리와 프레임워크는 일견 비슷한 점이
있다.
※프레임워크와 라이브러리
• 프레임워크와 라이브러리의 가장 큰 차이점이라 할만 한 건 프레임워크는 라이브러리에 뼈대가
되는 클래스들과 그 클래스들의 관계로 만들어진 일종의 ‘설계의 기본 틀’이 추가된다는 점일 것이다.
• 여기서 쓴 ‘설계의 틀’이란 말은 ‘확장 가능한 기반코드’라든지, ‘재사용 가능한 형태의 협업화된
클래스들’ 이라는 말과 같은 뜻이다.
※라이브러리
• 우선 라이브러리 부터 생각 해보자.
• 라이브러리가 아무리 날고 기어봤자 라이브러리는 라이브러리다.
• 라이브러리가 설계를 대신해 주진 않는다.
• 라이브러리는 그저 프로그래머가 프로그램을 짜다가 ‘아, 요럴 땐 라이브러리에서 이런 기능을
뽑아다 쓰면 되겠구나’ 라는 생각이 들었을 때, 그때 그때 필요한 걸 가져다 쓰는 대상이다.
• 라이브러리가 그 기능을 쓰기 위해 필요한(혹은 효율적인) 구조에 대해 말해주지는 않는다는
뜻이다.
• 따라서, 동일한 라이브러리를 쓰는 동일한 기능의 프로그램일지라도 클래스 관계 구조나, 데이터를 처리하는 절차라든지, 프로그램이 화면에 그려지는 방식 같은 등등의 요소들은 프로그램을 짜는
프로그래머마다 천차만별 일수 밖에 없으며 프로그램을 완성하는 데에 걸리는 시간도, 완성된 코드의
품질도 프로그래머의 역량에 따라 제 각각일 것이다.
※프레임워크
• 이제 프레임워크를 보자.
• 보통 프레임워크엔 프레임워크의 제작자가 ‘이걸 기초로 해서 만드세요’ 이라고 만들어 놓은 ‘기반
코드’가 있다.
• 물론 이 코드, 혹은 클래스들은 차후 사용자들에 의해 확장될 것을 충분히 고려해서 만들어졌기
때문에 사용자 입장에서는 그저 이 것을 가지고, 여기 저기를 자기 입맛대로 바꾸고 살을 덧붙여
자기만의 프로그램을 완성해 나가면 되는 것이다.
• 왜, 비주얼 스튜디오를 켜서 새 MFC 프로젝트를 열고
• 다이얼로그 기반 -> 확인 만 눌러도
• 일단 기본적으로 돌아가는 다이얼로그 박스가 완성되고,
• 사용자가 만약 여기다 그리기 기능을 추가하고 싶다, 하면 상속 받은 클래스에 OnPaint() 함수를
재정의해서 단순히 함수 몸체 안에 코드를 넣기만 하면 되는 것처럼 말이다.
• 프레임워크란
• 설계의 기반이 되는 부분을 기술한 확장 가능한 기반 코드와 사용자가 이 코드를 자기 입맛대로
확장하는 데 필요한 라이브러리 이 두 가지 요소가 통합되어 제공되는 형태를 말한다.
• 사용자가 이를 이용해 일정 수준 이상의 품질을 보장받는 코드를, 비교적 빠른 시간에 완성 및
유지 보수할 수 있는 환경을 제공해주는 솔루션으로 “기본적인 설계나 필요한 라이브러리는 알아서
제공해 줄 꺼니깐 넌 그냥 니가 진짜로 하고 싶은 기능 구현에만 전념해!” 라는 취지에서 만들어진
물건이란 것이다.
※솔루션의 개념
• 기업을 운영하는데 있어서 IT 시스템이 중요한 역할을 하는 시대에 진입하면서 IT 솔루션에 대한
관심과 활용이 증대되고 있다. IT 솔루션이 기업이 처한 문제를 해결 하는 것 뿐만 아니라 새로운
비즈니스 모델 생성을 통해 부가가치를 창출해 나가고 있기 때문이다. 이 때문에 해외를 비롯해
국내에서도 IT 솔루션을 적극 도입하고 있으며 매년 신규 솔루션이 IT 시장의 새로운 이슈가 되고 있다.
※IT 솔루션의 종류
• ‘솔루션’ 이라는 말 자체가 포괄적인 개념이라 쉽게 정의 내리기가 어려우며 경우에 따라서 조금씩
달리 사용되기도 한다. 그럼에도 불구하고 IT 솔루션을 한마디로 정의하면 ‘기업의 문제점을
발견하고 제품/서비스를 효과적으로 결합, 제공하여 문제를 해결함으로써 기업의 실질적인 성과를
향상시키는 것’ 이라고 말할 수 있다. 따라서 IT 솔루션의 궁극적인 목표는 기업의 비용절감과
수익증대, 리스크 관리 향상에 있다. 이러한 IT 솔루션은 특정한 컴퓨터 소프트웨어 패키지나 응용
프로그램 등을 통해서 이루어진다. IT 솔루션의 종류로는 대표적으로 전사자원관리(ERP), 고객관계
관리(CRM), 공급망관리(SCM) 등이 있다.
• ERP
• Enterprise Resource Planning의 약어
• 일명 "전사적 자원 관리"
• 기업 전체 자원의 효율적 관리 시스템
• 한 기업의 전반적인 경영에 대한 총괄적인 관리를 효율적으로 할 수 있는 기업 자원통합관리 정도의
개념, 회계, 인사, 기획 등등 전부 합친 것
• CRM
• Customer Relationship Management의 약어
• 일명 "고객관계관리"
• 고객 관계 관리는 소비자들으로 자신의 고객으로 만들고, 이를 장기간 유지하고자 하는
경영방식이며 기업들이 고객과의 관계를 관리, 고객확보, 그리고 고객, 판매인 협력자와 내부 정보를
분석하고 저장하는데 사용하는 광대한 분야를 아우르는 방법.
• DBMS
• Database Management System의 약어
• 데이터베이스 관리 시스템은 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록
해 주는 소프트웨어 도구의 집합이다. DBMS는 사용자 또는 다른 프로그램의 요구를 처리하고
적절히 응답하여 데이터를 사용할 수 있도록 해준다.
• SCM
• Supply Chain Management의 약어
• SCM이란 제조, 물류, 유통업체 등 유통공급망에 참여하는 모든 업체들이 협력을 바탕으로
정보기술(Information Technology)을 활용, 재고를 최적화하고 리드타임을 대폭적 감축하여
결과적으로 양질의 상품 및 서비스를 소비자에게 제공함으로써 소비자가치를 극대화하기 위한
21세기 기업의 생존 및 발전전략이다.
• 세계적으로 선도적 위치에 있는 제조업체, 물류업체, 유통업체들은 이와 같은 목적을 달성하기
위하여 그들의 거래선들과 협력함으로써 그 이익을 훨씬 더 극대화하였으며, SCM을 추진 중에 있는
대표적인 업체로는 P&G, Wal-Mart, Unilever, Kellogg’s, Coca Cola, J.C Penney 등이 있다.
• BPM
• Business Process Management의 약어
• 업무 효율화를 위해 업무 프로세스를 표준화하고, 업무 분장과 업무 처리관련 솔루션
• BPM이란 복잡하고 다이나믹하며 Firewall을 뛰어 넘어 조직내/외부, 그리고 조직 밖에 파트너 및
고객과의 사이에 짜여진 Business Process들에 관한 실체이다. 효과적인 자동화와
Cross-functional processes를 관리하기 위해서는 이러한 실체를 반영한 새로운 접근법과 이를
지지하는 툴이 필요한데 BPM이 바로 그것이다.
• ITSM
• Information Technology Service Management의 약어
• IT 시스템의 고객들의 편의 제공을 위해 제공하는 서비스 관리 솔루션
• KMS
• Knowledge Management System의 약어
• 일명 "지식 경영 시스템" 업무 인수인계, 최신 기술 전달 관련
• SECURITY
• 보안
• PLM
• Product Lifecycle Management의 약어
• 제품 라이프사이클(제품 생명주기)을 관리
•PLM은 우리말로 ‘제품 라이프사이클 관리’ 혹은 ‘제품 수명주기 관리’라고 부른다. 여기에서 제품
(Product)은 주로 공장에서 생산되는 여러가지 제품을 이야기하는데, 예를 들면 자동차나
전자제품, 항공기, 선박, 신발, 의류, 플랜트 등이 있다.
•라이프사이클은 제품을 만들기 위한 기획 단계에서 부터 설계, 생산, 유지보수를 거처 폐기에
이르는 전체 과정을 의미한다. 수명주기라고도 이야기 하는데, 일반 회사에서는
‘라이프사이클이라는 용어를 주로 사용하고, 국방부를 비롯한 정부기관에서는 주로 ‘수명주기’라는
용어를 사용한다.
•따라서 PLM은, 제품을 정의하는 정보(Product definition information)를 라이프사이클 동안
효율적으로 관리하여, 정확한 정보를 필요한 사람에게 빠른 시간 내에 사용할 수 있도록 해주는
시스템이다.
• POS
• Point Of Sales의 약어, 편의점의 계산대 제품이 POS이다.
• 판매, 회계 업무를 함께 처리할 수 있는 시스템(예-편의점, 식당 등)
• 판매 시점 정보 관리(POS 시스템)는 판매와 관련한 데이터를 일괄적으로 관리하고, 고객정보를
수집하여 부가가치를 향상시키는 시스템이다. 판매 시점은 물품 거래가 완료되는 장소이다.
일반적으로 컴퓨터 시스템을 이용하여 판매 시점 관리가 이루어지면, 상품의 제조/생산 단계에서
바코드 등을 이용하여 관리의 효율성을 증대한다.
• Streaming
• 음성 또는 동영상 실시간 전송 기술
• 스트리밍(streaming)은 주로 소리(음악)나 동영상 등의 멀티미디어 파일을 전송하고 재생하는
방식의 하나이다.
• 보통 파일은 내려받고 난 뒤에 열리는 작업을 하지만, 동영상과 같이 크기가 큰 파일을 재생할
때에는 내려 받는 데에 시간이 오래 걸릴 수 있다. 파일을 다운로드 하는 것과 더불어 재생을
함으로써 기다리는 시간을 크게 줄일 수 있다.
• MES
• Manufacturing Execution System의 약어
• 생산 작업 환경 관리(예-공장 처리 시스템)
• 생산관리시스템, 줄여서 MES은 생산계획 · 작업지시 · 자재소요 · 생산추적 · 설비관리 · 생산성과
분석 등을 맡아 생산 관리의 효율성을 높이는 시스템이다. 제조실행시스템이라고도 한다.
※웹 그리드
1. TOBESOFT
• 라이브러리란? - What is Library?
•간략 설명 : 프로그램 제작 시 필요한 기능
•비교 설명 : 자동차 바퀴, 자동차 헤드라이트, 자동차 에어백
•재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여
사용할 수 있도록 Class나 Function으로 만들어진 것이다.
•사용 여부는 코드 작성자 선택 사항이며 새로운 라이브러리 제작 시에도 엄격한 규칙이 존재하지
않는다. 제작 의도에 맞게 장성하면 된다.
• 라이브러리 예시
•가장 유명한 자바스크립트 라이브러리는 jQuery 이다.
•그래픽 사용자 인터페이스(Graphical user interface, GUI)에서 재사용하기 쉽게 버튼, 테이블
같은 구성 요소를 호출해서 쓸 수 있도록 분리해두었다면 라이브러리 이다.
•Windows에서 간혹 보았을 dll 확장자는 동적 링크 라이브러리(dynamic-link library,DLL)의
약자로 라이브러리라고 할 수 있다.
•객체지향 프로그래밍(object-oriented programming, OOP)은 기본적으로 각 기능마다 함수화
하는 것으로 클래스 라이브러리라고 할 수도 있다.
• 프레임워크란? – What is Framework?
•간략 설명 : 프로그램 기본 구조(뼈대)
•비교 설명 : 자동차 프레임
•원하는 기능 구현에만 집중하여 빠르게 개발 할 수 있도록 기본적으로 필요한 기능을 갖추고 있는
것으로 위에서 설명한 라이브러리가 포함되어 있다.
•프레임워크만으로는 실행되지 않으며 기능 추가를 해야 되고 프레임워크에 의존하여 개발해야
되며 프레임워크가 정의한 규칙을 준수해야 한다.
•겉보기에는 비슷하지만 많은 프레임워크가 존재하는 이유는 아래에서 설명하게 될 아키텍처가
다른 것이며 규칙을 준수해야 되는 이유이기도 하다.
•프레임워크 예시
Java 개발자라면 Spring
Python 개발자라면 Django
JavaScript 개발자라면 Angularjs
PHP 개발자라면 Laravel
• 아키텍처란? – What is Architecture?
•간략 설명 : 프로그램 주요 구조 설계
•비교 설명 : 자동차 도면
•기획한 내용을 프로그램화했을 경우 필요한 주요 특징을 기술적으로 설계하고 명시하는 것이다.
•결과물에 필요한 모든 구성 요소를 명시하지만, 구체적으로 구현 방법은 포함되어 있지 않다.
가령, 뒤에서 설명할 플랫폼은 주요 특징이지만 프레임워크와 라이브러리는 주요 특징이 아니므로
명시되지 않을 가능성이 크다.
•자동차 설계로 예를 들면 자동차 헤드라이트가 본넷 밑에 사각형 모양으로 존재한다고 설계하고
헤드라이트 고정 방식이 접착제인지, 볼트인지는 명시되지 않는다고 볼 수 있다. 하지만 상황에
따라 포함 될 수도 있다.
•아키텍처 예시
PC를 조립하기 위해 하드웨어 부분을 확인하고 선택한 리스트가 아키텍처라 할 수 있다.
• 플랫폼이란? – What is Platform?
•간략 설명 : 프로그램 실행 환경
•비교 설명 : 자동차 주행 환경(일반 고속도로용, 사막 전용, 경주용)
•프로그램이 실행되는 환경이며 플랫폼은 플랫폼 위에 다른 플랫폼이 존재할 수 있다. 가령,
Windows에서 Java로 개발하고 있으며 앱스토어에서 어플을 내려받는 과정에서 이미 3개의
플랫폼을 사용하고 있는 것이다.
•플랫폼은 같은 영역에도 다양한 목적과 가치로 많이 만들어지고 있으며 모든 플랫폼에서
실행되도록 개발하기는 어렵다. 프로그램의 목적에 맞도록 플랫폼을 선택하는 것이 중요하다.
•플랫폼 예시
Windows, Linux, macOS 등 O/S는 모두 플랫폼이다.
어플을 다운받는 앱스토어, 구글플레이, 원스토어도 플랫폼이다.
V8 JavaScript Engine은 JavaScript에게 큰 힘이 되어주고 있는 플랫폼이다.
Java 프로그램은 OS제약이 없지만 실행하기 위해서는 해댱 OS 자바 가상
머신(Java Virtual Machine, JVM)위에서 실행되므로 Java 플랫폼이 필요하다.
※프레임워크와 플랫폼의 차이점
• 프레임워크 : 소프트웨어 뼈대 구조
•프레임워크는 다른 소프트웨어 프로젝트가 개발될 수 있는 뼈대 구조이다.
•지원 프로그램, 라이프러리, 언어, 다른 소프트웨어 구성 요소들을 엮어 주는 소프트웨어 등을
포함하고 있다.
•따라서, 플랫폼도 프레임워크의 일종이라고 폴 수 있으며, MS사에서 닷넷 플랫폼을 닷넷 프레임
워크라고 지칭하는 것도 틀린 것이 아니다.
•또한, UI 프로그램 개발을 위한 부분 만을 떼어내서 프레임워크라고 할 수도 있다.
•UI 프로그램 개발을 위한 부분 만으로는 완전한 소프트웨어 실행 환경이 되지 않으므로 플랫폼은
아니지만 프레임워크이다.
•이러한 점에서 프레임워크와 플랫폼은 다른 경우가 많다.
• 플랫폼 : 소프트웨어 실행 환경
•가장 일반적이면서도 명료한 의미는 “소프트웨어가 실행되는 환경”이다.
•개발 언어나 개발 환경을 플랫폼에 포함시키기도 하지만 이는 부수적 개념 혹은 확장된 개념에
불과하고, 핵심은 “소프트웨어가 실행되는 환경”이다.
•각 프로그램은 아무 플랫폼에서나 실행되는 것이 아니고 특정 플랫폼에서만 실행된다.
•일반적으로, O/S는 모두 플랫폼이다. Windows는 윈도우 프로그램만을 실행시킬 수 있는 플랫폼
이고, 리눅스는 리눅스 프로그램만을 실행시킬 수 있는 플랫폼이다.
•자바 런타임 환경도 플랫폼이다.
•자바 프로그램은 O/S에 대한 종속성은 거의 없고 자바 런타임 환경없이는 실행되지 않으므로
자바 런타임 환경을 주요 플랫폼으로서 필요로 한다.
•마찬가지로 닷넷 프로그램도 닷넷 런타임 환경없이는 실행되지 않으므로 닷넷 런타임 환경이
플랫폼이 된다.
•AJAX 기술을 사용하여 개발된 웹 컨텐츠 + 웹 클라이언트 스크립트는 웹(좀 더 정확히는 웹
브라우저 및 웹 서버) 없이는 실행되지 않으므로 웹을 플랫폼으로 한다.
•VBA(Visual Basic for Application) 프로그램과 MS 오피스 COM API를 사용하는 프로그램은
MS 오피스가 없으면 실행되지 않으므로 MS 오피스를 플랫폼으로 한다.
•플랫폼은 플랫폼 위에 다른 플랫폼을 구축할 수 있는 계층적 구조를
[출처] 프레임워크와 플랫폼의 차이|작성자 땜문