※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
개발 환경 구축의 개요
개발 환경 구축은 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것을 의미합니다.
- 개발 환경은 응용 소프트웨어가 운영될 환경과 유사한 구조로 구축합니다.
- 개발 프로젝트의 분석 단계의 산출물을 바탕으로 개발에 필요한 하드웨어와 소프트웨어를 선정합니다.
- 하드웨어와 소프트웨어의 성능, 편의성, 라이선스 등의 비즈니스 환경에 적합한 제품들을 최종적으로 결정하여 구축합니다.
하드웨어 환경
하드웨어 환경은 사용자와의 인터페이스 역할을 하는 클라이언트(Client) 그리고 클라이언트와 통신하여 서비스를 제공하는 서버(Server)로 구성됩니다.
- 클라이언트에는 PC, 스마트폰 등이 있습니다.
- 서버는 사용 목적에 따라 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버 등으로 나뉩니다.
서버의 종류
- 웹 서버(Web Server)
- 클라이언트로부터 직접 요청을 받아 처리하는 서버로, 저용량의 정적 파일들을 제공합니다.
- 예) Apache HTTP Server, Microsoft Internet Infromation Service, Google Web Server 등
- 웹 애플리케이션(WAS, Web Application Server)
- 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버입니다.
- 예) Apache Tomcat, IBM WebSphere, Oracle WebLogic 등
- 데이터베이스 서버(DB Server)
- 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버입니다.
- 예) MySQL Server, Oracle Server, Microsoft SQL Server 등
- 파일 서버(File Server)
- 데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버입니다.
- 예) AWS S3 등
웹 서버(Web Server)의 기능
- HTTP/HTTPS 지원
- 브라우저로부터 요청을 받아 응답할 때 사용하는 프로토콜
- 통신기록(Communication Log)
- 처리한 요청들을 로그 파일로 기록하는 기능
- 정적 파일 관리(Managing Static Files)
- HTML, CSS, 이미지 등의 정적 파일들을 저장하고 관리하는 기능
- 대역폭 제한(Bandwidth Throttling)
- 네트워크 트래픽의 포화를 방지하기 위해 응답 속도를 제한하는 기능
- 가상 호스팅(Virtual Hosting)
- 하나의 서버로 여러 개의 도메인 이름을 연결하는 기능
- 인증(Authentication)
- 사용자가 합법적인 사용자인지를 확인하는 기능
※ 정적 파일(Static File)
정적 파일은 인터넷 브라우저와 같은 클라이언트에서 별도의 처리 과정 없이 다운로드 하여 사용자에게 보여주는 파일로, HTML, CSS, 이미지 파일 등이 있습니다.
※ 동적 서비스(Dynamic Service)
동적 서비스는 사용자의 입력에 따라 다른 결과를 보여주는 서비스를 의미합니다. 쇼핑몰을 예로 들면, 상품들을 인기순으로 정렬하기 위해 클릭을 했을 때 나오는 화면은 미리 만들어져 있는 페이지가 아닌 클릭한 순간 상품들을 정렬하여 페이지를 구성한 후 표시하는 동적인 화면입니다.
※ HTTP/HTTPS (HyperText Transfer Protocol [Secure])
HTTP는 하이퍼텍스트 문서를 전송하기 위해 사용하는 프로토콜이고, HTTPS는 HTTP에 보안 모듈을 결합시킨 프로토콜입니다.
소프트웨어 환경
소프트웨어 환경은 클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성됩니다.
- 시스템 소프트웨어는 운영체제(OS), 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS 등이 있습니다.
- 개발 소프트웨어에는 요구사항 관리 도구, 설계/모델링 도구, 구현 도구, 빌드 도구, 테스트 도구, 형상 관리 도구 등이 있습니다.
여러가지 도구들
- 요구사항 관리 도구
- 요구사항의 수집과 분석, 추적 등을 편리하게 도와주는 소프트웨어
- 예) JIRA, IBM DOORS, inteGREAT, Reqtify, Trello 등
- 설계/모델링 도구
- UML(통합 모델링 언어)을 지원하며, 개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어
- 예) DB Designer, PlantUML, ArgoUML 등
- 구현 도구
- 개발 언어를 통해 애플리케이션의 실제 구현을 지원하는 소프트웨어
- 예) Eclipse, IntelliJ IDEA, Visual Studio, Netbeans, Node.js 등
- 빌드 도구
- 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 소프트웨어
- 예) Ant, Gradle, Maven, Jenkins 등
- 테스트 도구
- 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 소프트웨어
- 예) CppUnit, JUnit, NUnit, Spring Test 등
- 형상 관리 도구
- 산출물들을 버전별로 관리하여 품질 향상을 지원하는 소프트웨어
- 예) GIT, CVS, Subversion, Mercurial 등
개발 언어의 선정 기준
개발 언어를 선정할 때는 다음과 같은 5가지 특성이 고려되어야 합니다.
- 적정성 : 개발하려는 소프트웨어의 목적에 적합해야 합니다.
- 효율성 : 코드의 작성 및 구현이 효율적이어야 합니다.
- 이식성 : 다양한 시스템 및 환경에 적용이 가능해야 합니다.
- 친밀성 : 개발 언어에 대한 개발자들의 이해도와 활용도가 높아야 합니다.
- 범용성 : 다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야 합니다.
※ UML(Unified Modeling Language)
UML은 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어입니다.
※ 형상 관리 도구
형상 관리를 다른 말로 버전 관리라고도 합니다.
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - 프로그래램 구현 - 모듈 (4) | 2024.09.01 |
---|---|
정보처리산업기사 - 프로그래램 구현 - 서버 개발 (0) | 2024.08.31 |
정보처리산업기사 - 프로그래밍 언어 활용 - 프로토타입 (0) | 2024.08.29 |
정보처리산업기사 - 프로그래밍 언어 활용 - 예외 처리 (0) | 2024.08.28 |
정보처리산업기사 - 프로그래밍 언어 활용 - 라이브러리 (0) | 2024.08.27 |