-
[정보처리기사] 4과목 프로그래밍 언어 활용 : 1장. 서버 프로그램 구현정보처리기사 2022. 2. 22. 16:27728x90반응형
1. 개발 환경 구축
2. 서버 개발
3. 보안 및 API
4. 배치 프로그램
5. 패키지 소프트웨어1. 개발 환경 구축
개발 환경 구축의 개요
- 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것
- 응용 소프트웨어가 운영될 환경과 유사한 구조로 구축
- 하드웨어와 소프트웨어의 성능, 편의성, 라이선스 등의 비즈니스 환경에 적합한 제품들을 최종적으로 결정하여 구축
하드웨어 환경
- 사용자와의 인터페이스 역할을 하는 클라이언트 그리고 클라이언트와 통신하여 서비스를 제공하는 서버로 구성됨
- 클라이언트에는 PC, 스마트폰 등이 있음
- 서버
(1) 웹 서버: 클라이언트로부터 직접 요청을 받아 처리하는 서버로, 저용량의 정적 파일들을 제공함
(2) 웹 애플리케이션 서버: 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버
(3) 데이터베이스 서버: 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
(4) 파일 서버: 데이터베이스에 저장하기는 비효율적이나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버
웹 서버의 기능
- HTTP/HTTPS 지원, 통신 기록, 정적 파일 관리, 대역폭 제한, 가상 호스팅, 인증
소프트웨어 환경
- 클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성됨
- 시스템 소프트웨어에는 운영체제, 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS 등이 있음
- 개발 소프트웨어
(1) 요구사항 관리 도구: 요구사항의 수집과 분석, 추적 등을 편리하게 도와주는 소프트웨어
(2) 설계/모델링 도구: UML을 지원하며, 개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어
(3) 구현 도구: 개발 언어를 통해 애플리케이션의 실제 구현을 지원하는 소프트웨어
(4) 빌드 도구: 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 소프트웨어
(5) 테스트 도구: 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 소프트웨어
(6) 형상 관리 도구: 산출물들을 버전별로 관리하여 품질 향상을 지원하는 소프트웨어
개발 언어의 선정 기준
- 적정성, 효율성, 이식성, 친밀성, 범용성
2. 서버 개발
서버 개발의 개요
- 웹 애플리케이션의 로직을 구현한 서버 프로그램을 제작하여 웹 애플리케이션 서버에 탑재하는 것
- 웹 애플리케이션 서버에 구현된 서버 프로그램은 웹 서버로부터 받은 요청을 처리하여 결과를 반환하는 역할을 수행함
- 각 프로그래밍 언어에는 해당 언어로 서버 프로그램을 개발할 수 있도록 지원하는 프레임워크가 있음
서버 개발 프레임워크
- 서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어
- 서버 개발 프레임워크의 종류
(1) Spring : JAVA를 기반으로 만들어진 프레임워크로, 전자정부 표준 프레임워크의 기반 기술로 사용되고 있음
(2) Node.js : JavaScript를 기반으로 만들어진 프레임워크로, 비동기 입출력 처리와 이벤트 위주의 높은 처리 성능을 갖고 있어 실시간으로 입출력이 빈번한 애플리케이션에 적합함
(3) Django : Python을 기반으로 만들어진 프레임워크로, 컴포넌트의 재사용과 플러그인화를 강조하여 신속한 개발이 가능하도록 지원함
(4) Codeigniter : PHP를 기반으로 만들어진 프레임워크로, 인터페이스가 간편하여 서버 자원을 적게 사용함
(5) Ruby on Rails : Ruby를 기반으로 만들어진 프레임워크로, 테스트를 위한 웹 서버를 지원하며 데이터베이스 작업을 단순화, 자동화시켜 개발 코드의 길이가 짧아 신속한 개발이 가능함
서버 프로그램 구현
- 응용 소프트웨어와 동일하게 모듈 및 공통 모듈을 개발한 후, 모듈들을 통합하는 방식으로 구현됨
- 모듈은 모듈화를 통해 분리된 시스템의 각 기능들로, 서브 루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용됨
- 모듈 개발 시 기능적 독립성을 고려하여 다른 모듈과의 과도한 상호작용을 배제함으로써 특정 모듈의 수정이 다른 모듈들에게 영향을 미치지 않아야 함
- 모듈의 독립성은 결합도와 응집도에 의해 측정되며, 독립성을 높이려면 모듈의 결합도를 약하게 하고 응집도를 강하게 하며 모듈의 크기를 작게 만들어야 함
- 공통 모듈은 여러 프로그램에서 재사용할 수 있는 모듈을 의미하며, 자주 사용되는 계산식이나 매번 필요한 사용자 인증 같은 기능들이 공통 모듈로 구성될 수 있음
프레임워크의 특성
- 모듈화, 재사용성, 확장성, 제어의 역흐름
3. 보안 및 API
소프트웨어 개발 보안의 개요
- 소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동
- 데이터의 기밀성, 무결성, 가용성을 유지하는 것을 목표로 함
소프트웨어 개발 보안 점검 항목
(1) 세션 통제: 세션은 서버와 클라이언트의 연결을 말하며, 세션 통제는 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것을 의미함
(2) 입력 데이터 검증 및 표현: 입력 데이터에 대한 유효성 검증체계를 갖추고, 검증 실패 시 이를 처리할 수 있는 코딩을 하는 것을 의미
(3) 보안 기능: 인증, 접근제어, 기밀성, 암호화 등의 기능
(4) 시간 및 상태: 동시 수행을 지원하는 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 시스템이 원활히 동작되도록 코딩하는 것
(5) 에러처리: 소프트웨어 실행 중 발생할 수 있는 오류들을 사전에 정의하여 에러로 인해 발생할 수 있는 문제들을 예방하는 것
(6) 코드 오류: 개발자들이 코딩 중 실수하기 쉬운 형 변환, 자원의 반환 등을 고려하며 코딩하는 것
(7) 캡슐화: 데이터와 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩하는 것
(8) API 오용: API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 고려하여 코딩하는 것
API
- 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스
- 프로그래밍 언어에서 특정한 작업을 수행하기 위해 사용되거나, 운영체제의 파일 제어, 화상 처리, 문자 제어 등의 기능을 활용하기 위해 사용됨
- 개발에 필요한 여러 도구들을 제공하기 때문에 이를 이용하면 원하는 기능을 쉽고 효율적으로 구현할 수 있음
- Windows API, 단일 유닉스 규격, Java API, 웹 API 등이 있으며, Open API가 있음
4. 배치 프로그램
배치 프로그램의 개요
- 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것
(1) 정기 배치 (2) 이벤트성 배치 (3) On-Demand 배치
- 배치 프로그램이 갖추어야 하는 필수 요소
(1) 대용량 데이터: 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야 함
(2) 자동화: 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 함
(3) 견고성: 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 함
(4) 안정성/신뢰성: 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 함
(5) 성능: 다른 응용 프로그램의 수행을 방해하지 않아야 하고, 지정된 시간 내에 처리가 완료되어야 함
배치 스케줄러
- 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구
1) 스프링 배치
- 스프링 프레임워크의 특성을 그대로 가져와 스프링이 가지고 있는 다양한 기능들을 모두 사용할 수 있음
- 데이터베이스나 파일의 데이터를 교환하는데 필요한 컴포넌트들을 제공함
- 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등의 다양한 기능을 제공함
- 스프링 배치의 주요 구성 요소와 역할
(1) Job: 수행할 작업 정의
(2) Job Launcher: 실행을 위한 인터페이스
(3) Step: Job 처리를 위한 제어 정보
(4) Job Repository: Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장
2) Quartz
- 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리
- 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성을 제공함
- Quartz의 주요 구성 요소와 역할
(1) Scheduler: 실행 환경 관리
(2) Job: 수행할 작업 정의
(3) JobDetail: Job의 상세 정보
(4) Trigger: Job의 실행 스케줄 정의
5. 패키지 소프트웨어
패키지 소프트웨어의 개요
- 기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공하는 소프트웨어
- 패키지 소프트웨어를 이용하여 시스템을 구축하는 방식을 패키지 개발 방식이라고 함
- 기능 요구사항을 70% 이상 충족시키는 패키지 소프트웨어가 있을 때만 사용하는 것이 적합함
패키지 소프트웨어의 특징
- 요구사항을 분석하여 업무 특성에 맞게 전용으로 개발되는 소프트웨어와 비교하여 안정성, 라이선스, 생산성 등에서 차이가 있음
- 전문 업체에 의해 품질이 검증되었고, 국제/산업계 표준을 준수하고 있어 안정적인 이용이 가능함
- 소프트웨어에 대한 리아선스가 판매자에게 있기 때문에 시스템 구축 후 기능 추가 및 코드 재사용 등에 제약이 발생함
- 개발 조직을 갖추어야할 필요성이 없어 비용을 절감할 수 있고, 이미 개발된 소프트웨어를 사용하고 있기 때문에 프로젝트 기간이 단축됨
- 결함이 발생한 경우 판매처의 프로세스에 따라 보완되므로 이용자의 사정에 따라 능동적인 대처를 기대하기는 어려움
LIST'정보처리기사' 카테고리의 다른 글
[정보처리기사] 4과목 프로그래밍 언어 활용 : 3장. 응용 SW 기초 기술 활용 (0) 2022.02.24 [정보처리기사] 4과목 프로그래밍 언어 활용 : 2장. 프로그래밍 언어 활용 (0) 2022.02.22 [정보처리기사] 5과목 정보시스템 구축 관리 : 4장. 시스템 보안 구축 (0) 2022.02.21 [정보처리기사] 5과목 정보시스템 구축 관리 : 3장. 소프트웨어 개발 보안 구축 (0) 2022.02.18 [정보처리기사] 5과목 정보시스템 구축 관리 : 2장. IT프로젝트 정보시스템 구축 관리 (1) 2022.02.18