View

Section 121. 개발 환경 구축

1. 하드웨어 환경 - 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버

사용자와의 인터페이스 역할을 하는 클라이언트 (pc,스마트폰 등) 그리고 클라이언트와 통신하는 서비스를 제공하는 서버로 구성

  • 웹 서버 :  클라이언트로부터 직접 요청을 받아 처리하는 서버로, 저용량의 정적 파일들을 제공
  • 웹 애플리케이션 서버(WAS) : 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행하거나 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할을 수행하는 서버
  • 데이터베이스 서버 : 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
  • 파일 서버 : 데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버

*정적 파일(Static File) : 인터넷 브라우저와 같은 클라이언트에서 별도의 처리 과정 없이 다운로드 하여 사용자에게 보여주는 파일로 HTML,CSS,이미지 파일 등이 있다.

 동적 서비스(Dynamic Service) : 사용자의 입력에 따라 다른 결과를 보여주는 서비스 (ex. 인기순으로 정렬)

 

2. 소프트웨어 환경 - 시스템 소프트웨어, 개발 소프트웨어

시스템 소프트웨어 : 운영체제(OS), 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS 등

개발 소프트 웨어 

  • 요구사항 관리 도구
  • 설계/모델링 도구 : UML(통합 모델링 언어)을 지원하며, 개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어
  • 구현 도구
  • 빌드 도구
  • 테스트 도구
  • 형상 관리 도구 (버전 관리)

* UML : 시스템 개발자와 고객 또는 개발자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어

* 개발 언어의 선정 기준

  1. 적정성 : 개발하려는 소프트웨어의 목적에 적합해야 한다.
  2. 효율성 : 코드의 작성 및 구현이 효율적이어야 한다.
  3. 이식성 : 다양한 시스템 및 환경에 적용이 가능해야 한다.
  4. 친밀성 : 개발 언어에 대한 개발자들의 이해도와 활용도가 높아야 한다.
  5. 범용성 : 다른 개발 사례가 존재하고 여러 분야에서 활용되고 있어야 한다.

 

Section 122. 서버 개발

1. 서버 개발의 개요

 서버 개발은 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버(WAS)에 탑재하는 것을 의미

  • 웹 애플리케이션 서버에 구현된 서버 프로그램은 웹 서버로부터 받은 요청을 처리하여 결과를 반환하는 역할
  • 각 프로그래밍 언어에는 해당 언어로 서버 프로그램을 개발할 수 있도록 지원하는 프레임워크가 있다.

2. 서버 개발 프레임워크

 서버 개발 프레임워크는 서버 프로그램 개발 시 다양한 네트워크 설정, 요청 및 응답처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어를 의미

* 프레임워크 : 특정 기능을 수행하기 위해 필요한 클래스나 인터페이스 등을 모아둔 집합체

  • 서버 개발 프레임워크는 대부분은 모델-뷰-컨트롤러(MVC) 패턴을 기반으로 개발되었다.

* 모델-뷰-컨트롤러 :  시스템을 세부분으로 분리하여 서로 영향 받지 않고 개발할 수 있는 아키텍처 패턴

프레임워크 특징
Spring JAVA를 기반으로 만들어진 프레임워크 / 전자정부 표준 프레임워크의 기반 기술
Node.js JavaScript를 기반으로 만들어진 프레임워크 / 실시간으로 입출력이 빈번한 애플리케이션에 적합
Django Python을 기반으로 만들어진 프레임워크 / 컴포넌트의 재사용과 플러그인화를 강조
Codeigniter PHP를 기반으로 만들어진 프레임워크 / 인터페이스가 간편하며 서버 자원을 적게 사용
Ruby on Rails Ruby를 기반으로 만들어진 프레임워크 / 단순화,자동화로 신속한 개발 가능

3. 서버 프로그램 구현

 서버 프로그램은 응용 소프트웨어와 동일하게 모듈 및 공통 모듈을 개발한 후 모듈들을 통합하는 방식으로 구현

  • 모듈은 모듈화를 통해 분리된 시스템의 각 기능들로, 서브 루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용

* 루틴 :  기능을 가진 명령들의 모임

  메인 루틴 : 프로그램 실행의 큰 줄기가 되는 것

  서브 루틴 : 메인 루틴에 의해 필요할 때마다 호출되는 루틴

  • 모듈의 독립성(↑): 결합도(↓) 응집도(↑) 모듈의 크기(↓) 

* 결합도 : 모듈 간에 상호 의존하는 정도 또는 연관 관계

* 응집도 :  정보 은닉 개념을 확장한 것으로 명령어나 호출문 등 모듈의 내부 요소들의 서로 관련되어 있는 정보, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도

  • 공통 모듈 : 여러 프로그램에서 재사용할 수 있는 모듈

  3.1 프레임워크의 특성

  • 모듈화 : 프레임워크는 캡슐화를 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로서 소프트웨어의 품질을 향상시킨다.
  • 재사용성 : 프레임워크는 재사용 가능한 모듈들을 제공함으로써 개발자의 생산성을 향상시킨다.
  • 확장성 : 프레임워크는 다형성을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능
  • 제어의 역흐름(Inversion of Control) : 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킨다.

* 다형성 : 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

 

Section 123. 보안 및 API

1. 소프트웨어 개발 보안

소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동

  • 데이터의 기밀성, 무결성, 가용성을 유지하는 것이 목표
  • 정부에서 제공하는 소프트웨어 개발 보안 가이드를 참고하여 소프트웨어 개발과정에서 점검해야 할 보안 항목들을 점검

2. 소프트웨어 개발 보안 점검 항목

세션 통제 - 세션(서버와 클라이언트의 연결)의 연결과 연결로 인해 발생하는 정보를 관리하는 것
- 보안 약점 : 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출 등
입력 데이터 검증 및 표현 - 입력 데이터에 대한 유효성 검증체계를 갖추고 검증 실패 시 이를 처리할 수 있도록 코딩하는 것
- 보안 약점 : SQL 삽입, 경로 조작 및 자원 삽입, 크로스사이트 스크립팅(XSS) 등
보안 기능 - 인증, 접근제어, 기밀성, 암호화 등의 기능을 의미
- 보안 약점 : 적절한 인증 없는 중요기능 허용, 부적절한 인가 등
시간 및 상태 - 동시 수행을 지원하는 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 시스템이 원활히 동작되도록 코딩하는 것을 의미
- 보안 약점 : 검사 시점과 사용 시점(TOCTOU) 경쟁조건, 종료되지 않는 반복문 또는 재귀함수 등
에러처리 - 오류를 사전에 정의하여 에러로 인해 발생할 수 있는 문제들을 예방하는 것을 의미
- 보안 약점 : 오류 메시지를 통한 정보 노출, 오류 상황 대응 부재 등
코드 오류 - 개발자들이 코딩 중 실수하기 쉬운 형 변환, 자원의 반환 등을 고려하며 코딩하는 것을 의미
- 보안 약점 : 널 포인터 역참조, 부적절한 자원 해제 등
캡슐화 - 데이터(속성)와 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩하는 것을 의미
- 보안 약점 : 잘못된 세션에 의한 데이터 정보 노출, 제거되지 않고 남은 디버그 코드 등
API 오용 - API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 고려하여 코딩하는 것을 의미
- 보안 약점 : DNS looksp에 의존한 보안결정, 취약한 API 사용

3. API (Application Programming Interface)

응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스

(ex. 리모컨 - TV를 조작하기 위해 제조사가 미리 정해둔 방법이 API)

  • 특정한 작업을 수행하기 위해 사용되거나, 운영체제의 파일 제어, 화상 처리, 문자 제어 등의 기능을 활용하기 위해 사용
  • Windows API, 단일 유닉스 규격(SUS), Java API, 웹 API 등이 있다.

Section 124. 배치 프로그램

1. 배치 프로그램

사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것

  • 수행 주기
정기 배치 일, 주, 월과 같이 정해진 기간에 정기적으로 수행
이벤트성 배치 특정 조건을 설정해두고 조건이 충족될 때만 수행
On-Demand 배치 사용자 요청 시 수행
  • 필수 요소
대용량 데이터 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야 한다.
자동화 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 한다.
견고성 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 한다.
안정성/신뢰성 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 한다.
성능 다른 응용 프로그램의 수행을 방해하지 않아야 하고, 지정된 시간 내에 처리가 완료되어야 한다.

2. 배치 스케줄러 (잡 스케줄러)

일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구

 2.1 스프링 배치

  • 스프링 프레임워크의 특성을 그대로 가져와 스프링이 가지고 있는 다양한 기능들을 모두 사용할 수 있다.
  • 스프링 프레임워크 : 웹 서버 개발을 위해 다양한 API를 제공하는 오픈 소스의 경량형 애플리케이션 프레임워크로 전자정부 표준 프레임워크의 기반 기술로도 사용
  • 데이터베이스나 파일의 데이터를 교환하는데 필요한 컴포넌트들을 제공한다.
  • 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등의 다양한 기능을 제공한다.
  • 주요 구성 요소와 역할
Job 수행할 작업 정의
Job Launcher 실행을 위한 인터페이스
Step Job 처리를 위한 제어 정보
Jop Repository Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장

 

 2.2 Quartz

  • 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리
  • 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성을 제공한다.
  • 주요 구성 요소와 역할
Scheduler 실행 환경 관리
Job 수행할 작업 정의
JobDetail Job의 상세 정보
Trigger Job의 실행 스케줄 정의

 

Section 125. 패키지 소프트웨어

기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공하는 소프트웨어

 

728x90
Share Link
reply
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31