(Day1) - 소프트웨어에 관하여
이 글은 제가 교육을 수강하며 기록한 내용입니다. 강사님과 무관하게 잘못된 내용이 있을 수 있습니다.
클라우드 기반 웹 데브옵스 프로젝트 개발자 교육 과정 (5기)
- 비트캠프 엄진영 강사님 [Github]
- 훈련기관 : 네이버클라우드주식회사
- 기간: 2023-11-14 ~ 2024-5-22
- 남은 일자 : 128 일 ( 1/129 )
1일(2023-11-14, 화)
소프트웨어 유형별 특징을 설명할 수 있는가?
시스템 소프트웨어와 어플리케이션 소프트웨어 두 유형으로 나눌 수 있습니다.
시스템 소프트웨어는 하드웨어를 제어하며 저수준 언어로 주로 작성됩니다. OS와 Driver, Embedded Software 등이 시스템 소프트웨어입니다.
어플리케이션 소프트웨어는 특정 작업을 수행하기 위한 소프트웨어입니다. 흔히 사용하는 메모장, 포토샵, 브라우저 등이 모두 어플리케이션 소프트웨어입니다.
소프트웨어는 컴퓨터 프로그램과 관련된 문서와 데이터들의 집합
이다. 소프트웨어 유형
은 두 가지로 분류할 수 있다. 시스템 소프트웨어
와 어플리케이션 소프트웨어
로 나누는 것이다.
- 시스템 소프트웨어
- 시스템 소프트웨어는 하드웨어를 제어하기 위한 소프트웨어이다.
- 어플리케이션 소프트웨어
- 어플리케이션 소프트웨어는 특정 목적을 수행하기 위한 소프트웨어이다.
- 예시
- 시스템 소프트웨어의 예시로는 OS, Driver, Embedded 가 있고, 어플리케이션 소프트웨어는 메모장, 포토샵, 온라인 게임, 웹 브라우저 등이 있다.
- 특징
- 시스템 소프트웨어는 하드웨어를 직접적으로 제어해야 한다. 그런데 하드웨어의 제어는 성능이 매우 중요하다. 그래서 시스템 소프트웨어를 개발할 때는 저급 언어를 주로 쓴다. C, 어셈블리어가 대표적인 예시이다. 어플리케이션 소프트웨어는 흔히 ‘응용 소프트웨어’ 혹은 ‘어플리케이션’ 이라고 불리는데, 전자는 한국어로 번역한 것이고 후자는 ‘소프트웨어’를 빼고 줄여 부르는 것이다. 정확한 명칭은 Application Software 가 맞다.
Application Software의 유형 분류는 아래 웹 애플리케이션 아키텍처에 대한 체크리스트에서 다룬다.
웹 애플리케이션 아키텍처와 구동 원리를 간단히 설명할 수 있는가?
웹 애플리케이션 아키텍처는 애플리케이션 아키텍처 중 하나입니다.
클라이언트가 웹 브라우저를 통해 애플리케이션을 구동하는 방식을 웹 애플리케이션이라고 합니다.
구동 원리: 웹 애플리케이션은 클라이언트가 웹 서버에 JavaScript, HTML, CSS 파일을 요청하고 웹 서버가 응답한다.
(자바기준으로 웹 애플리케이션 서버에서 서블릿 컨테이너를 통해 처리된 자바 애플리케이션의 결과 또한 응답한다.)
- 웹 애플리케이션 아키텍처는
클라이언트가 웹 브라우저를 통해 서버에 요청을 주고, 서버는 클라이언트 웹 브라우저에 응답을 주어서 그 요청과 응답에 따라 구동되는 애플리케이션의 구동 방식을 말한다.
- 그 구동원리는
- HTML, CSS, JS 등의 정보는 웹 서버가 클라이언트에게 전송해줘서 클라이언트의 브라우저로 실행하며 (CSR, Client Side Rendering) Java 기준으로는 서블릿 컨테이너를 통해 처리한 자바 애플리케이션의 결과를 클라이언트에게 전달해주는 것이다. (SSR, Server Side Rendering)
위 문장을 정확히 이해하려면 우선 아키텍처에 대해서 먼저 정의를 내려야 한다.
- 아키텍처의 정의
- ‘하나의 서비스가 어떻게(구성, 동작 원리 등) 동작이 된다’라는 것을 표현하는 말이다.
애플리케이션 소프트웨어의 아키텍처는 아래와 같은 순서로 등장했다. (왼쪽이 먼저 등장)
Stand Alone Application Software
» Client - Server Application
» Web Application
순으로 아키텍처가 등장해왔다.
먼저 특정 업무를 수행하기 위해 개별 컴퓨터에서 단독적으로 실행되는 애플리케이션 이 개발되었다. 이것이 스탠드얼론 아키텍처 를 가진 애플리케이션이다. 이 방식은 다른 컴퓨터와 통신하는 것이 불가능했다.
그래서 다음 등장한 것이 클라이언트-서버 아키텍처 이다. 하나 혹은 다수의 클라이언트와 서버가 통신하는 형태 의 구동 방식을 가진 애플리케이션이 등장한 것이다. 그런데 클라이언트-서버 아키텍처는 단점이 있었다. 해당 소프트웨어를 설치하지 않으면 서버와 통신할 수 없었다.
WWW(World Wide Web)이 출현하고, 클라이언트는 브라우저만 있다면 다른 프로그램의 설치 없이 웹 서버와 통신이 가능했다. 여기서 웹 애플리케이션 아키텍처 가 발생하게 된다. 웹 서버, 애플리케이션 서버를 가진 서버가 클라이언트에게 웹 애플리케이션을 제공하게 된 것이다.