4과목 프로그래밍 언어 활용 서버 프로그램 구현 127 ~ 131

2024. 2. 5. 15:44
728x90

127. 개발 환경 구축

: 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것. 

1) 하드웨어 환경

: 사용자와의 인터페이스 역할을 하는 클라이언트 & 클라이언트와 통신하여 서비스를 제공하는 서버.

- 클라이언트 : PC, 스마트폰

- 서버 

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

2) 소프트웨어 환경

: 클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성.

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

- 개발 소프트웨어: 

  • 요구사항 관리 도구
  • 설계/모델링 도구
  • 구현 도구
  • 빌드 도구
  • 테스트 도구
  • 형상 관리 도구

- 개발 언어 선정 기준 : 적정성, 효율성, 이식성, 친밀성, 범용성

 

128. 서버 개발

: 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 WAS에 탑재하는 것.

- 서버 개발 프로그래밍 언어 : Java, JavaScript, Python, PHP, Ruby

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

  • Spring : JAVA 기반. 
  • Node.js : JavaScript 기반.
  • Django : Python 기반.
  • Codeigniter : PHP 기반.
  • Ruby on Rails : Ruby 기반.

2) 서버 프로그램 구현 : 모듈 및 공통 모듈을 개발한 후, 모듈들을 통합하는 방식.

 

129. 보안 및 API

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

- 기밀성(Confidentiality), 무결성 (Integrity), 가용성 (Availability) 유지! 

- 보안 점검 항목

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

 

- API (Application Programming Interface)

: 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스. 

 

130. 배치 프로그램

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

- 정기 배치 / 이벤트성 배치 / On-Demand 배치

- 필수요소 : 대용량 데이터 / 자동화 / 견고성 / 안정성, 신뢰성 / 성능

 

1) 배치 스케줄러 : 일괄처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구. 

- 스프링 배치 : 데이터베이스나 파일의 데이터를 교환하는데 필요한 컴포넌트들을 제공. 로그관리, 추적, 트랜잭션 관리, 작업처리 통계, 작업 재시작 등. 

- 구성요소

  • Job : 수행할 작업 정의
  • Job Launcher : 실행을 위한 인터페이스
  • Step : Job 처리를 위한 제어 정보
  • Job Repository : Step의 제어정보를 포함하여 작업 실행을 위한 모든 정보 저장.

- Quartz : 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위해 다양한 기능을 제공하는 오픈 소스 라이브러리. 

  • Scheduler : 실행 환경 관리
  • Job : 수행할 작업 정의
  • JobDetail : Job의 상세 정보
  • Trigger : Job의 실행 스케줄 정의

131. 패키지 소프트웨어

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

728x90

BELATED ARTICLES

more