💠기타/자격증

[정처기 필기] 「4」 | 서버 프로그램 구현 - (1.1) 서버 개발, 보안 / API, 배치 프로그램

2024. 2. 13. 21:32
728x90

[정처기 필기] 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 등, 무료로 공개된 APIOpen 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 기본서 (길벗알앤디)

 

728x90