4과목 프로그래밍 언어 활용 서버 프로그램 구현 127 ~ 131
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. 패키지 소프트웨어
: 기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공하는 소프트웨어.
'Programming > 정처기' 카테고리의 다른 글
4과목 프로그래밍 언어 활용 프로그래밍 언어 활용 140 ~ 148 (0) | 2024.02.06 |
---|---|
4과목 프로그래밍 언어 활용 프로그래밍 언어 활용 132 ~ 139 (0) | 2024.02.05 |
3과목 데이터베이스 구축 SQL 활용 114 ~ 120 (1) | 2024.02.04 |
3과목 데이터베이스 구축 SQL 응용 107 ~ 113 (0) | 2024.02.04 |
3과목 데이터베이스 구축 물리 데이터베이스 설계 100 ~ 106 (0) | 2024.02.03 |