[정처기 필기] 「4」 | 서버 프로그램 구현 - (1.1) 서버 개발, 보안 / API, 배치 프로그램
[정처기 필기] 「4」 | 서버 프로그램 구현 - (1.1) 서버 개발, 보안 / API, 배치 프로그램
「1」 소프트웨어 설계
「2」 소프트웨어 개발
「3」 데이터베이스 구축
> 「4」 프로그래밍 언어 활용
- > 서버 프로그램 구현, 프로그래밍 언어 활용, 응용 sw 기초 기술 활용
「5」 정보시스템 구축 관리
> 1 서버 개발
> 2 보안 / API
> 3 배치 프로그램
1. 서버 개발
서버 개발의 개요
웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버(WAS)에 탑재하는 것
- 웹 서버로부터 받은 요청을 처리하여 결과 반환
- Java, JavaScript, Python, PHP, Ruby 등
- 각 프로그래밍 언어에는 서버 프로그램을 개발을 지원하는 프레임워크 존재
서버 개발 프레임워크
서버 프로그램 개발 시 다양한 네트워크 설정, 요청 / 응답 처리, 아키텍처 모델 구현 등 지원하는 클래스, 인터페이스 제공
- 서버 개발 프레임워크에 따라 지원하는 프로그래밍 언어가 제한적이므로 선정할 프레임워크도 제한적
- 대부분 모델-뷰-컨트롤러(MVC) 패턴을 기반으로 개발
Spring : JAVA를 기반으로 만들어진 프레임워크, 전자정부 표준 프레임워크의 기반 기술로 사용
Node.js : JavaScript를 기반으로 만들어진 프레임워크, 비동기 입 / 출력 처리, 이벤트 위주 높은 성능 처리, 실시간 입 / 출력 빈번한 애플리케이션에 적합
Django : Python을 기반으로 만들어진 프레임워크, 컴포넌트의 재사용과 플러그화로 신속한 개발 가능
Codeigniter : PHP를 기반으로 만들어진 프레임워크, 인터페이스 간편하여 서버 자원 적게 사용
Ruby on Rails : Ruby를 기반으로 만들어진 프레임워크, 테스트를 위한 웹 서버 지원, 데이터베이스 작업을 단순화, 자동화하여 개발 코드의 길이가 짧아 신속한 개발 가능
서버 프로그램 구현
응용 소프트웨어와 동일하게 모듈 / 공통 모듈 개발 후, 모듈을 통합하는 방식
- 모듈은 모듈화를 통해 분리된 시스템의 각 기능들, == 서브 루틴, 서브 시스템, 소프트웨어 내의 프로그램, 작업 단위
- 모듈 개발 시 기능적 독립성을 고려하여 과도한 상호작용을 배제해야 함, 결합도를 약하게 응집도를 강하게 크기 작게
- 공통 모듈은 재사용할 수 있는 모듈, 자주 사용되는 계산식, 사용자 인증 같은 기능
2. 보안 / API
소프트웨어 개발 보안의 개요
소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 안전한 소프트웨어 개발을 위한 보안 활동
- 데이터의 기밀성, 무결성, 가용성을 유지하는 것이 목표
- 소프트웨어 개발 보안 가이드 참고하여 보안 항목들을 점검
소프트웨어 개발 보안 점검 항목
세션 통제
: 세션은 서버와 클라이언트의 연결, 세션 통제는 세션의 연결, 연결로 인해 발생하는 정보를 관리
: 불충분한 세션 관리, 잘못된 세션에 의한 정보 노출
입력 데이터 검증 / 표현
: 입력 데이터에 대한 유효성 검증체계 갖추고, 검증 실패 시 처리하도록 코딩
: SQL 삽입, 경로 조작 / 자원 삽입, 크로스사이트 스크립팅(XSS)
보안 기능
: 인증, 접근제어, 기밀성, 암호화
: 적절한 인증 없는 중요기능 허용, 부적절한 인가
시간 / 상태
: 병렬 처리 시스템, 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태 관리하여 원활히 동작되도록 코딩
: 검사 시점과 사용 시점(TOCTOU) 경쟁조건, 종료되지 않는 반복문과 재귀함수
에러처리
: 발생할 수 있는 오류들을 사전에 정의하여 문제를 예방
: 오류 메시지를 통한 정보 노출, 오류 상황 대응 부재
코드 오류
: 형 변환, 자원의 반환 등 고려하며 코딩
: 널 포인터 역참조, 부적절한 자원 해제
캡슐화
: 데이터와 함수를 하나의 객체로 묶어 코딩
: 잘못된 세션에 의한 데이터 정보 노출, 제거되지 않고 남은 디버그 코드
API 오용
: API 잘못 사용, 보안에 취약한 API 사용하지 않도록 고려하여 코딩
: DNS lookup에 의존한 보안결정, 취약한 API 사용
API(Application Programming Interface)
운영체제, 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등 정의해 놓은 인터페이스
- 특정 작업을 수행하기 위해 사용, 운영체제의 파일 제어, 화상 처리, 문자 제어 등 기능을 활용하기 위해 사용
- 여러 도구 제공되므로 원하는 기능 쉽고 효율적으로 구현
- Window API, 단일 유닉스 규격(SUS), Java API, 웹 API 등, 무료로 공개된 API를 Open API
3. 배치 프로그램
배치 프로그램(Batch Program)의 개요
사용자와 상호작용 없이 미리 정해진 순서에 따라 일괄적으로 처리하는 것
정기 배치 : 일, 주, 월과 같이 정해진 기간에 정기적으로 수행
이벤트성 배치 : 특정 조건을 설정하고 조건이 충족될 때만 수행
On-Demand 배치 : 사용자 요청 시 수행
필수 요소
대용량 데이터 : 대량의 데이터를 처리 가능
자동화 : 심각한 오류가 발생하는 것을 제외하고 사용자의 개입없이 수행
견고성 : 잘못된 데이터, 데이터 중복 등으로 중단되는 일 없이 수행
안정성 / 신뢰성 : 오류가 발생하면 오류의 발생 위치, 시간 등 추적할 수 있어야 함
성능 : 다른 응용 프로그램의 수행을 방해하지 않아야 하며, 지정된 시간 내 처리 완료되어야 함
배치 스케줄러(Batch Scheduler)
일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해 주는 도구
- 특정 업무를 원하는 시간에 처리하도록 지원, == 잡 스케줄러(Job Scheduler)
- 스프링 배치, Quartz
스프링 배치(Spring Batch)
: Spring Source 사, Accenture 사가 공동 개발한 오픈 소스 프레임워크
: 스프링이 가지고 있는 다양한 기능 모두 사용 가능
: 데이터베이스나 파일의 데이터를 교환하는 데 필요한 컴포넌트들 제공
: 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등 기능 제공
: 주요 구성 요소
- Job : 수행할 작업 정의
- Job Launcher : 실행을 위한 인터페이스
- Step : Job 처리를 위한 제어 정보
- Job Repository : Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장
Quartz
: 스프링 프레임워크로 일괄 처리를 위한 다양한 기능 제공하는 오픈 소스 라이브러리
: 수행할 작업, 수행 시간을 관리하는 요소를 분리하여 유연성을 제공
: 주요 구성 요소
- Scheduler : 실행 환경 관리
- Job : 수행할 작업 정의
- JobDetail : Job의 상세 정보
- Trigger : Job의 실행 스케줄 정의
출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)