Terminology Guide
By CNS on May 2, 2017
프론트쪽은 현재 다양한 기술과 프레임웍들이 나와서 그 영역이 그만큼 넓어지고 있어 개인마다 끊임없이 본인 역량을 계발해야하고 공부해야한다. 아래 내용은 대표적으로 알고 사용하고 있는 기술 및 용어에 대해 간단하게 정리해 보았다.
Architecture
컴퓨터 아키텍처라고도 한다. 처리단위인 어장(語長), 기억방법인 어드레스(번지)방식, 데이터의 형식 등 기본적 요소의 조합으로 컴퓨터의 용도, 처리속도 등이 크게 달라진다. 범용의 대형 컴퓨터에서는 IBM의 아키텍처가 세계의 표준으로 되어 있으나 컴퓨터의 고도화와 다양화로 그 종류, 응용범위가 날로 진전하고 있다. 그러나 아키텍처를 쉽게 변경하면 과거의 소프트웨어 자산을 쓸 수 없게 될 수도 있으므로 호환성을 가지게 하면서 변경하는 방법이 일반적이다.
Framework
프레임워크란 쉽게 말해서 큰 틀이라고 보면 된다. 프로그램이 만들어져서 구동이 될 때 내부구조가 정교하고 단단해야 오류가 발생할 확률이 낮고 유지보수에도 유리하다. 그렇기 때문에 규모가 큰 프로그램을 작성할 때에는 반드시 아주 하위의 오브젝트부터 차근차근 형태를 갖춰나가면서 틀을 잡게된다. 이렇게 해서 점점 구조화된 틀을 프레임워크라고 보면 되겠다. 장점으로는 따로 세팅을 안해줘도 되지만 단점으로는 다른 라이브러리나 API를 쓸때 자유도 면에서 좀 불편할 수 있다. 예로는 Spring Framework 를 들 수 있다.
Platform
플랫폼이란 용어를 설명하기란 쉽지 않다. 알아보면서 내가 느낀바로는 프레임워크의 한 종류라 할 수 있고 우리가 사용한 OS가 그에 해당된다. 예로는 Windows, Linux, J2EE, .Net 등이 있다.
API
API는 Application Programming Interface
의 약자이며, 누군가가 어떤 프로그램을 개발하면서 만들어놓은 여러 기능들의 집합이라고 보면 될 것 같다. 예를 들어서 가장 범용적으로 사용되는 api에는 win32 api가 있다. ms가 windows를 개발하면서 구현해놓은 3천여가지가 넘는 공개된 함수들을 win32 api라고 한다. 물론 윈도우즈뿐만 아니라 리눅스에도 있고, 프론트 개발자들이 자주 접하는 네이버, 구글, 페이스북, 유투브, 카카오톡 등 다양한 API 가 제공되고 있다.
Library
라이브러리란 이미 작성되어 있는 실행코드의 집합체라고 볼 수 있다. API와 비슷하다고 느낄 수 있지만 좀 다른 개념으로 볼 수 있다. 쉽게 얘기 하자면 이미 만들어 놓은 코드를 재사용할 수 있도록 파일을 따로 만들어서 배포하기 위한 개념으로 만들어진 것이다. 사용하기 위해서는 따로 세팅(설정) 이 필요하고 자유롭게 다른 라이브러리나 API와 함께 사용 할 수 있다.
Grunt
자동화 빌드 시스템으로 처음 접한 기술이다. Node.js 기반으로 설정 하는데 다소 어려움이 있고 다른 자동화 빌드 시스템에 비해 다소 느리다. 현재는 사용하는 개발자들이 많이 없는 것으로 알고 있다.
Gulp
Grunt를 접함과 동시에 바로 Gulp로 갈아타게 되었다. Grunt와 마찬가지로 자동화 빌드 시스템으로 Node.js를 기반으로 동작하고 있다. Grunt에 비해 설정하는데 쉽고 속도 측면에서도 조금 빠르다고 할 수 있다. 현재 단독 프로젝트의 경우 조금씩 사용하고 있다.
Webpack
위에 말한 Grunt, Gulp 와 같은 자동화 빌드 라고 할 수도 있지만 더 큰 범위로 생각할 수 있겠다. Module Bundler 라고도 하며 다양한 로더들을 통해 javascript 뿐만 아니라 css, scss 등을 이용해 포함시킬 수 있다. 현재 다양한 프레임워크, 라이브러리 등 과 함께 사용되고 있으며, 가장 핫한 모듈이라고 할 수 있다. webpack2 가 사용되고 있으며 React 테스트 할때 조금씩 사용하고 있지만 아직 익숙치는 않다.
NPM
Node Packaged Modules
의 약자로 Node.js 에서 사용할 수 있는 모듈을 패키지로 모아놓은 것이다. 커멘드 창이나 Git Bash 등을 통해 다양한 프레임워크나 라이브러리를 설치 할 수 있다. 현재 난 Git Bash로 사용하고 있다. npm 대신 yarn도 많이 사용하고 있다. 속도 측면에서 yarn이 낫다고 하던데 아직 사용해 본적은 없다.
YO(yeoman)
Node.js 기반으로 Yo, bower, grunt 세가지를 합쳐놓은 도구라고 할 수 있다. angular와 함께 등장 했다.
Babel
바벨은 컴파일러로써 TypeScript, CoffeeScript 같은 Javascript 문법이 아닌 각각의 문법으로 작성된 코드를 Javascript 엔진에서 동작 가능한 코드로 변환하는 역할을 하는데, 여기에서는 React JS의 JSX 문법을 Javascript에서 실행되도록 변환하는 역할을 한다. ES6와 함께 등장하였으며 현재 ES6를 ES5로 변환해 줄 수도 있다. 참고로 얘기하면 현재 몇몇 브라우저를 제외하고는 ES6 문법을 지원하지 않고 있다.
Browserify
Browserify 또한 모듈 번들러로 AMD, commonJS 에서 대부분 사용하고 있다. require 구문을 하용하고 있다.
React
2012년쯤 facebook에서 출시하여 현재까지 많은 프론트 개발자들이 실무에 적용하면서 사용하고 있다. 상당히 유연하고 다른 라이브러리와 함께 사용할 수 있다. 지금 가장 관심이 가는 분야이기도 하다. 아직 갈길이 멀뿐..
Angular
2013년쯤 google에서 출시하여 react와 양대산맥을 이루고 있다고 볼 수 있다. 아직 사용해본적이 없어 자세히는 모르지만 angular는 프레임워크라고 할 수 있겠다. 현재는 angular2가 나와 있는 상태이다.
Vue
2015년 가장 최근에 출시한 기술로써 기초적인 부분만 살펴 보았지만 사용하기 어렵지 않고 쉽게 접근할 수 있는 부분인것 같다. 출시후에 지속적으로 사용빈도가 높아지고 있다. 추후에 사용해 볼 예정이다.
마무리
위에 다양한 프론트 기술들을 간단하게 나마 정리해 보았다. 더 다양하고 많은 기술들이 있지만 지금 현재 핫하고 관심있는 부분들로만 구성했다. 이렇게 급변하는 프론트 상황을 보면 끊임없이 공부해야할 것 같다. 내년이 되면 또 다른 기술이 나오겠지..하앜ㅠ