애플리케이션이란?
웹 애플리케이션 개발자를 하겠다고 듣는 과정이다.
그럼 애플리케이션이 뭔지는 알아야지.
스토리를 따라가서 애플리케이션이 뭔지 알아보자.
하드웨어를 제어하는 것이 소프트웨어이다.
(H/W Examples: Central Processing Unit, Random Access Memory, Network Interface Card(NIC), Printer, Scanner…)
소프트웨어는 또 여기서 둘로 나뉘어진다.
시스템 소프트웨어와 응용(Application) 소프트웨어다.
여기서 응용(Application) 소프트웨어가 ‘애플리케이션’이다.
Application S/W 를 보통 Application라고 부를 뿐이다.
소프트웨어를 붙이는게 원래 맞는 표현이다.
한국어로 치면 응용 프로그램을 그냥 응용이라고 편하게 부르고 있는 것이다.
두 글자가 둘 다 짧지는 않으니 ㅋㅋ
시스템 소프트웨어에 대해서
이야기를 이어가면,
시스템 소프트웨어는 OS가 대표적이다. 컴퓨터를 제어하는 것이 운영체제이기 때문이다.
다른 시스템 소프트웨어는 드라이버가 있다. 프린터나 스캐너들을 조종(Drive)하는 소프트웨어가 드라이버다.
- OS와 Driver는 C, C++를 많이 쓴다.
- 드라이버는 OS에 의존성이 있다.
다른 예로는 가전 제품등에 사전에 설치되어 있는 (끼워져 있는 =Embedded) 임베디드 소프트웨어도 시스템 소프트웨어이다.
임베디드 소프트웨어가 발전해서 인터넷에 연결되니 IoT가 등장(Internet of Things)
그런데 이 IoT가 시스템 소프트웨어라고 해도 이걸 제어하는 건 대부분 애플리케이션이다.
어플리케이션의 종류
Application Software는 다시 단독실행 여부로 분류할 수 있다.
스탠드얼론(Standalone)으로 단독 실행이 가능한 소프트웨어가 있고,
Client/Server Software(클라이언트/서버 소프트웨어)로 통신이 필요하며, 클라이언트가 서비스를 서버에게 받아오는 소프트웨어이다.
웹개발은 웹 브라우저와 서버를 묶어주는 웹 기술을 기반으로 한 Web Server Application 의 개발을 말한다.
여기서 웹 서버 어플리케이션이라는 용어에서 흔히 서버를 빼서 웹 어플리케이션이라고 부른다.
웹 어플리케이션을 만들 때는 크게 두 부분으로 나뉜다.
PC에서 설치된 웹 브라우저는 서버에 다음과 같은 리소스들을 요청한다.
HTML, CSS, Javascript, Images, Sounds…. 이런 리소스들을 받고 브라우저가 렌더링하여 사용자에게 보여준다.
서버는 Java 혹은 Javascript(node.js)를 기반으로 데이터를 처리한다.
네이버 FE 경력 면접문제?
다음은 네이버 FE 경력 기술면접에서 물어본 것이다. "주소창에 도메인치고 엔터 누르면 어떤 일들이 일어나는가?"
위 내용을 a4에다 적으라고 하고 면접을 본 거다.
대략 이런 내용들이 있을 것이다.
- 도메인을 IP로 바꾸기 위해 도메인 네임 서버에 연결됨
- 도메인 네임 서버가 받은 도메인에 해당하는 아이피를 반환
- 해당 아이피로 접근하여 서버와 연결됨
- 서버에서 js, html, css 다운로드 함
- 받은 HTML을 DOM Tree로 만들고 CSS 붙이고
- 실제로 먼저 렌더링 해야 하는 부분을 렌더 트리에 분류 …
이런 내용을 알아야 화면을 더 빠르게 (성능 좋게) 뿌릴 수 있을 것이며 그런 사람을 경력자로 뽑고 싶어할 것이다
https://d2.naver.com/helloworld/59361
DOM 이 뭔지 리액트의 Virtual DOM이 뭐가 이득인지 이해하려면 이런 내용들을 알아야 한다.
프로그래밍도 암기다. 응용도 암기다.
프로그래밍에 암기도 중요하다. 사실 암기과목이라고 봐도 된다. 기존에 풀었던 방법을 암기했기 때문에 응용이 가능한 것.
모든 학문이 다 기본이 암기. 코테도 그 문제와 유사한 걸 풀어본 사람을 뽑으려고 하는 것.
프론트엔드 개발자가 개발한 html css javascript image 같은 것들은 서버에서 저장되고 있다가 클라이언트가 다운받아서 렌더링에 사용됨
URL : Unified Resource Locator 통일된 자원 위치표시에 따라 있는 저러한 HTML CSS Javascript…
Java, PHP는 클라이언트 요청이 있으면 서버에서 실행하여 실행 결과로 나온 데이터만 클라이언트에서 다운로드한다.
Java, PHP 같은 부분은 백엔드 개발자가 하고, HTML, CSS, Javascript등은 프론트엔드 개발자가 개발하는데 둘 다 하면 풀스택 개발자다.
웹 서버에서 자바를 실행하기 위해 서블릿 컨테이너를 사용한다.
그리고 자바를 더 쉽게 관리하기 위해 스프링 프레임워크를 쓴다.
스프링 프레임워크와 서블릿 컨테이너를 통합해서 관리할 수 있도록 스프링 부트가 출시된다.
어플리케이션의 역사, 진화의 발자국들을 보려면 아키텍처를 봐야 한다.
어플레케이션 아키텍처를 배우는 건 지금 쓰는 아키텍처의 장단점을 이해하기 위해 필요한 과정이다.
소프트웨어의 진화
첫 시작은 스탠드얼론 아키텍처이다.
그 다음이 클라이언트/서버 아키텍처이다.
그 다음은 웹 브라우저가 등장하고, 웹 어플리케이션 서버 아키텍처가 등장한다. (웹 어플리케이션 아키텍처)
이런 진화의 과정을 훈련과정 내에서 직접 프로그래밍 해보면서 따라갈 것이다.
(실제 진화는 더 상세하다. 메모리에 저장했다가, 파일에 저장했다가, 데이터 관리(DBMS) 소프트웨어가 등장하고, 스탠드얼론이 그렇게 발전하다가 클라이언트/서버 애플리케이션에서 웹 어플리케이션 서버로, 그 다음엔 비동기 프로그래밍이 등장하고 그 이후에 iOS, Android가 등장하고 Web App Server-DBMS의 3Tier가 등장하고, 그 이후에 또 클라우드가 등장하는… 이러한 진화 과정이다.)
20년의 역사를 압축해서 배우는 것이다. 여기에 설계 기법 등등.. 많은 심화 부분들이 있다.