Etc/📃 Certification

[정보처리기사] 4과목 1장 - 서버 프로그램 구현

posted by sangmin

4과목 - 프로그래밍 언어 활용

1장. 서버 프로그램 구현


121. 개발 환경 구축

하드웨어 환경

  • 사용자 인터페이스 역할을 하는 클라이언트와 클라이언트와 통신하여 서비스를 제공하는 서버로 구성
  • 클라이언트
    • PC, 스마트폰 등
  • 서버
    • 웹 서버 (Web Server)
      • 클라이언트로부터 직접 요청을 받아 처리하는 서버 (저용량 정적 파일 제공)
      • ex) Apache HTTP Server, Google Web Server 등
    • 웹 애플리케이션 서버 (WAS, Web Application Server)
      • 사용자에게 동적 서비스 제공
      • ex) Apache Tomcat 등
    • 데이터베이스 서버 (DB Server)
      • 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
      • ex) MySQL Server, Oracle Server 등
    • 파일 서버 (File Server)
      • 데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버
      • ex) AWS S3 등

소프트웨어 환경

  • 클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구분
  • 시스템 소프트웨어
    • 운영체제, 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS 등
  • 개발 소프트웨어
    • 요구사항 도구 관리 : 요구사항 수집과 분석, 추적 등을 편리하게 도와주는 소프트웨어
    • 설계/모델링 도구 : UML을 지원하여 설계 및 모델링을 도와주는 소프트웨어
    • 구현 도구 : 애플리케이션의 실제 구현을 지원하는 소프트웨어
    • 빌드 도구 : 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 소프트웨어
    • 테스트 도구 : 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 소프트웨어
    • 형상 관리 도구 : 산출물들을 버전별로 관리

122. 서버 개발

서버 개발의 개요

  • 서버 프로그램을 제작하여 웹 애플리케이션 서버 (WAS)에 탑재하는 것을 의미
  • 웹 애플리케이션 서버에 구현된 서버 프로그램은 웹 서버로부터 받은 요청을 처리하여 반환

서버 개발 프레임워크

  • 서버 개발 프레임워크 대부분은 MVC 패턴을 기반으로 개발
  • 프레임워크의 특성
    • 모듈화 (Modularity)
    • 재사용성 (Reusability)
      • 생산성 향상
    • 확장성 (Extensibility)
      • 다형성을 통한 인터페이스 확장 가능
    • 제어의 역흐름 (Inversion of Control)
      • 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성 향상

서버 프로그램 구현

  • 서버 프로그램은 모듈 및 공통 모듈을 개발한 후, 모듈을 통합하는 방식으로 구현
  • 모듈 개발 시 기능적 독립성을 고려하여 다른 모듈과의 과도한 상호작용을 배제
  • 독립성을 높이려면 모듈의 결합도를 약하게, 응집도를 강하게, 모듈의 크기는 작게

123. 보안 및 API

소프트웨어 개발 보안의 개요

  • 목표 : 데이터의 기밀성, 무결성, 가용성을 유지하는 것

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

  • 세션 통제
    • 세션은 서버와 클라이언트의 연결을 뜻하며, 세션 통제는 세션의 연결로 인해 발생하는 정보를 관리하는 것
  • 입력 데이터 검증 및 표현
    • 입력 데이터에 대한 유효성 검증체계를 갖추고, 검증 실패 시 이를 처리할 수 있도록 코딩하는 것
  • 보안 기능
    • 인증, 접근제어, 기밀성, 암호화 등의 기능
  • 시간 및 상태
    • 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시스템이 원활히 동작하도록 코딩하는 것
  • 에러처리
    • 발생할 수 있는 오류들을 사전에 정의하여 에러로 인한 문제를 예방하는 것
  • 코드 오류
    • 코딩 중 실수하기 쉬운 형변환, 자원의 반환 등을 고려하여 코딩하는 것
  • 캡슐화
    • 데이터와 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩하는 것
  • API 오용
    • 보안에 취약한 API를 사용하지 않도록 고려하여 코딩하는 것

API (Application Programming Interface)

  • 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙을 정해 놓은 인터페이스
  • 개발에 필요한 여러 도구를 제공하기 때문에 원하는 기능을 쉽고 효율적으로 구현할 수 있음

124. 배치 프로그램

배치 프로그램 (Batch Program)의 개요

  • 사용자와의 상호 작용 없이 작업을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것
  • 자동으로 수행되는 주기에 따른 구분
    • 정기 배치 : 일, 주, 월과 같이 정해진 기간에 정기적으로 수행
    • 이벤트성 배치 : 특정 조건이 충족될때만 수행
    • On-Demand 배치 : 사용자 요청 시 수행
  • 필수 요소
    • 대용량 데이터 : 대량의 데이터 처리가 가능해야함
    • 자동화 : 심각한 오류가 발생하는 상황을 제외하고는 사용자 개입 업이 수행되어야함
    • 견고성 : 잘못된 데이터나 중복 등의 상황으로 중단되는 일 없이 수행되어야함
    • 안정성/신뢰성 : 오류 발생 시 추적할 수 있어야함
    • 성능 : 지정된 시간 내 처리가 완료되어야함

배치 스케줄러 (Batch Scheduler)

  • 배치 프로그래밍 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구
  • 스프링 배치 (Spring Batch)
    • 스프링 프레임워크의 특성을 그대로 가져옴
    • 데이터베이스나 파일의 데이터를 교환하는데 필요한 컴포넌트 제공
    • 구성 요소
      • Job : 수행할 작업 정의
      • Job Launcher : 실행을 위한 인터페이스
      • Step : Job 처리를 위한 제어 정보
      • Job Repository : Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장
  • Quartz
    • 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공
    • 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 유연성 제공
    • 구성 요소
      • Scheduler : 실행 환경 관리
      • Job : 수행할 작업 정의
      • JobDetail : Job 상세 정보
      • Trigger : Job 실행 스케줄 정의

125. 패키지 소프트웨어

패키지 소프트웨어 (Package Software)의 개요

  • 기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공하는 소프트웨어
  • 기능 요구사항을 70% 이상 충족시키는 패키지 소프트웨어가 있을 때만 사용하는 것이 적합

패키지 소프트웨어의 특징

  • 전문 업체에 의해 품질이 검증되었고, 국제 표준을 준수하고 있어 안정적인 이용 가능
  • 소프트웨어에 대한 라이선스가 판매자에게 있기 때문에 시스템 구축 후 기능 추가 및 코드 재사용 등에 제약 발생
  • 기존에 보유하고 있던 시스템과의 상호 연동 및 연계가 어려울 수 있음

참고

 

시나공 정보처리기사 필기

2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중 정보통신 분야의 ‘정보기술’ 분류에 포함된 ‘정보기술개발’과 ‘정보기술운영’에 속한 125개의 학습 모듈을

book.naver.com