▶ 121 개발 환경 구축
개발 환경 구축
소프트웨어 개발 시 구축해야 할 하드웨어 및 소프트웨어 장비를 구축하는 것
하드웨어 환경
클라이언트와 서버로 구성
- 클라이언트 : PC, 스마트폰 등
- 서버 : 웹서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버 등
> 웹 서버 : 클라이언트로부터 직접 요청을 받아 처리하는 서버, 정적파일 제공
* 정적 파일 : 별도의 처리 과정 없이 다운로드 해 사용자에게 보여주는 파일. HTML, CSS, 이미지 파일 등
> 웹 애플리케이션 서버(WAS) : 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나, 웹 서버와 데이터베이스 서버 또는 웹서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버
* 동적 서비스 : 사용자의 입력에 따른 결과를 보여주는 서비스
> 데이터베이스 서버 : 데이터베이스와 DBMS를 운영하는 서버
> 파일 서버 : 파일들을 저장하는 서버
☞ 웹 서버의 기능
- HTTP/HTTPS 지원, 통신 기록, 정적 파일 관리, 대역폭 제한, 가상 호스팅, 인증
소프트웨어 환경
클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성
- 시스템 소프트웨어 : OS, 웹서버 및 WAS 운용를 위한 서버 프로그램, DBMS
- 개발 소프트웨어 : 요구사항 관리 도구, 설계/모델링 도구, 구현 도구, 빌드 도구, 테스트 도구, 형상 관리 도구 등
☞ 개발 언어의 선정 기준
적정성, 효율성, 이식성, 친밀성, 범용성
▶ 122 서버 개발
서버 개발
서버 프로그램을 제작하여 웹 애플리케이션 서버에 탑재하는 것
- AWS에 구현된 서버 프로그램은 웹 서버로부터 받은 요청을 처리해 결과를 반환하는 역할 수행
- 서버 개발 용 프로그래밍 언어 : Java, JavaScript, Python, PHP, Ruby 등
서버 개발 프레임워크
- 서버 개발 프레임 워크의 대부분은 모델-뷰-컨트롤러(MVC) 패턴을 기반으로 개발 됨
* 모델-뷰-컨트롤러 : 참고 ▶021 아키텍처 패턴
• 서버 개발 프레임워크 종류
- Spring : JAVA 기반 프레임워크, 전자정부 표준 프레임워크의 기반 기술로 사용
- Node.js : JavaScript 기반 프레임워크
- Django : Python 기반 프레임워크
- Codeigniter : PHP 기반 프레임워크
- Ruby on Rails : Ruby 기반 프레임워크
서버 프로그램 구현
응용 소프트웨어와 동일하게 모듈 및 공통 모듈을 개발 후, 모듈을 통합하는 방식으로 구현됨
☞ 프레임워크의 특성
모듈화, 재사용성, 확장성, 제어의 역흐름
▶ 123 보안 및 API
소프트웨어 개발 보안
- 데이터의 기밀성, 무결성, 가용성을 유지하는 것을 목표로 함
- 정부에서 제공하는 소프트웨어 개발 보안 가이드를 참고해 점검해야 할 보안 항목들을 점검
소프트웨어 개발 보안 점검 항목
- 세션 통제
* 세션 : 서버와 클라이언트의 연결
* 세션 통제 : 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
- 입력 데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러처리
- 코드 오류
- 캡슐화
- API 오용
API(Application Programming Interface)
응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스
▶ 124 배치 프로그램
배치 프로그램(Batch Program)
사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것
- 배치 프로그램이 자동으로 수행되는 주기에 따라 정기 배치, 이벤트성 배치, On-Demand 배치로 구분
> 정기 배치 :일, 주, 월과 같이 정해진 기간에 정기적으로 수행
> 이벤트성 배치 : 특정 조건을 설정해두고 조건이 충족될 때만 수행
> On-Demand 배치 : 사용자 요청 시 수행
- 배치 프로그램이 갖추어야 하는 필수 요소 : 대용량 데이터, 자동화, 견고성, 안전성/신뢰성, 성능
- 백업 작업, 갱신 작업 등 대용량의 데이터가 주기적으로 교환되는 업무에 주로 사용
배치 스케줄러(Batch Schedular) = 잡 스케줄러
일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구
- 주로 사용되는 배치 스케줄러 : 스피링 배치, Quartz
• 스프링 배치
- Spring Source 사와 Accenture 사가 2007년 공동 개발한 오픈 소스 프레임워크
- 스프링 프레임워크의 특성을 그대로 가져옴
- 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등 다양한 기능 제공
- 주요 구성 요소와 역할
> Job : 수행할 작업 정의
> Job Lancher : 실행을 위한 인터페이스
> Step : Job 처리를 위한 제어 정보
> job Repository : Step의 제어 정보를 포함해 작업 실행을 위한 모든 정보 저장
• Quartz
- 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리
- 일괄 처리 작업에 유연성 제공
- 스프링 프레임워크의 특성을 그대로 가져옴
- 주요 구성 요소와 역할
> Scheduler : 실행 환경 관리
> Job : 수행할 작업 정의
> JobDetail : Job의 상세 정보
> Trigger : Job의 실행 스케줄 정의
▶ 125 패키지 소프트웨어
패키지 소프트웨어
기업에서 일반적으로 사용하는 여러 기능들을 통합해 제공하는 소프트웨어
패키지 소프트웨어와 전용 개발 소프트웨어의 비교
| 패키지 소프트웨어 | 전용 개발 소프트웨어 | |
기능 요구사항 | 70% 이상 충족시키는 패키지 소프트웨어가 있는 경우 이용 | 모든 기능 요구사항 반영 가능 | |
안전성 | 품질이 검증되어있고, 업계 표준 준용 | 개발자의 역량에 따라 달라짐 | |
라이선스 | 판매자 | 회사 | |
생산성 | 개발을 위한 인력과 시간이 절약됨 | 개발을 위한 인력과 시간이 필요 | |
호환성 | 보장이 안됨 | 설계 단계부터 고려하여 개발 | |
유지보수 | 결함 발생 시 즉시 대응이 어려움 | 결함 발생 시 즉시 대응 가능 |