728x90

개발 환경 구축

개발 환경 구축 개요

- 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고 S/W 및 H/W 장비를 구축하는 것

- 응용 소프트웨어가 운영될 환경과 유사한 구조로 구축

- 개발 프로젝트의 분석 단계의 산출물을 바탕으로 개발에 필요한 S/W와 H/W를 선정

- S/W와 H/W의 성능, 편의성, 라이선스 등 비즈니스 환경에 적합한 제품들을 최종적으로 결정하여 구축

 

H/W 환경

- 사용자의 인터페이스를 역할을 하는 클라이언트와 클라이언트와 통신하여 서비스하는 서버로 구성

출처 : 위키백과

- 웹 서버

    -> 클라이언트로부터 직접 요청을 받아 처리하는 서버

    -> 저용량의 정적 파일(HTML, CSS 등)을 제공

    -> ex) Apache HTTP Server, Microsoft Internet Information Service 등

출처 : 생활코딩(https://opentutorials.org/course/3084/18890)

- 웹 애플리케이션 서버(WAS)

    -> 사용자에게 동적 서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 가공 작업을 수행

    -> 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일 서버 사이에서 인터페이스 역할 수행

    -> ex) Apache Tomcat, IBM WebSphere 등

출처 : Research Gate(https://www.researchgate.net/figure/A-Typical-3-Tier-Server-Architecture-Tier-1-Web-Server-Tier-2-Application-Server-Tier_fig1_221147997)

- 데이터베이스 서버

    -> 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버

    -> ex) MySQL Server, Oracle Server 등

- 파일 서버

    -> 데이터베이스에 저장하기에는 비효율적이거나 서비스 제공 목적으로 유지하는 파일들을 저장하는 서버

    -> ex) AWS S3 등

 

S/W 환경

- 클라이언트 서버 운영을 위한 시스템 S/W와 개발에 사용되는 개발 S/W로 구성

- 시스템 S/W

    -> O/S, 웹 서버, WAS 운용을 위한 서버 프로그램

    -> DBMS

- 개발 S/W

    -> 요구사항 관리 도구 : 요구사항 수집과 분석, 추적 등을 편리하게 도와주는 S/W

    -> 설계 모델링 도구 : UML을 지원하며 개발의 전 과정에서 설계 및 모델링을 도와주는 S/W

    -> 구현 도구 : 개발 언어를 통해 애플리케이션의 실제 구현을 지원하는 S/W

    -> 빌드 도구 : 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 S/W

    -> 테스트 도구 : 모듈들이 요구사항에 적합하게 구현되었는지 테스트하는 S/W

    -> 형상 관리 도구 : 버전 관리를 하여 품질 향상을 지원하는 S/W

 

서버 개발

서버 개발의 개요

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

- 서버 프로그램을 개발할 수 있도록 지원하는 프레임워크가 있음

 

서버 개발 프레임워크

- 서버 프로그램 개발 시 다양한 설정을 손쉽게 할 수 있도록 클래스나 인터페이스를 제공하는 S/W

- 뷰-모델-컨트롤러(MVC) 패턴을 기반으로 개발됨

- Spring

    -> Java 기반 프레임워크

    -> 전자정부 표준 프레임워크의 기반 기술로 사용

- Node.js

    -> Javascript 기반 프레임워크

    -> 실시간으로 입출력이 빈번한 애플리케이션에 적합

- Django

    -> Python 기반 프레임워크

    -> 컴포넌트 재사용 및 플러그인화를 기반으로 신속한 개발을 지원

- Codeigniter

    -> PHP 기반 프레임워크

    -> 인터페이스가 간편하며 서버 자원을 적게 사용

- Ruby on Rails

    -> Ruby 기반 프레임워크

    -> 테스트를 위한 웹 서버 지원

    -> 데이터베이스 작업을 단순화, 자동화시켜 신속한 개발 가능

- 프레임워크의 특성 : 모듈화, 재사용성, 확장성, 제어의 역 흐름

 

서버 프로그램 구현

- 응용 S/W와 동일하게 모듈 및 공통 모듈 개발 후 통합하는 방식으로 구현

- 모듈 개발 시 다른 모듈과의 과도한 상호작용을 배제함으로써 특정 모듈의 수정이 다른 모듈에게 영향을 미치지 않아야 함

- 모듈의 독립성은 결합도와 응집도에 의해 측정

- 공통 모듈은 여러 프로그램에서 재사용할 수 있는 모듈

 

보안 및 API

S/W 개발 보안의 개요

- 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 S/W를 개발하기 위한 보안 활동

- 데이터의 기밀성, 무결성, 가용성을 유지해야 함

- S/W 개발 보안 가이드를 참고하여 점검해야 할 보안 항목을 점검해야 함

 

S/W 개발 보안 점검 항목

- 세션 통제

    -> 서버와 클라이언트의 연결 간 발생하는 정보를 관리

    -> 불충분한 세션 관리 또는 잘못된 세션에 의한 정보 노출

- 입력 데이터 검증 및 표현

    -> 입력 데이터에 대한 유효성 검증 체계를 갖추고 실패 시 이를 처리할 수 있도록 코딩하는 것

    -> SQL 삽입, 경로 조작 및 자원 삽입, 크로스 사이트 스크립팅

- 보안 기능

    -> 인증, 접근제어, 기밀성, 암호화 등의 기능

    -> 적절한 인증 없는 중요 기능 허용, 부적절한 인가

- 시간 및 상태

    -> 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 시스템이 원활히 동작되도록 하는 것

    -> 검사 시점과 사용 시점 경쟁 조건, 무한 루프, 재귀 함수

- 에러 처리

    -> S/W 실행 중 발생할 수 있는 오류들을 사전에 정의하여 에러로 인해 발생할 수 있는 문제들을 예방

    -> 오류 메시지를 통한 정보 노출, 오류 상황 대응 부재

- 코드 오류

    -> 형 변환, 자원의 반환 등을 고려하여 코딩하는 것

    -> 널 포인터 역참조, 부적절한 자원 해제

- 캡슐화

    -> 데이터와 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩하는 것

    -> 잘못된 세션에 의한 정보 노출, 제거되지 않고 남은 디버그 코드

- API 오용

    -> API를 잘못사용하거나 보안의 취약한 API를 사용하지 않도록 고려하여 코딩하는 것

    -> DNS lookup에 의존한 보안 결정

 

API(Application Programming Interface)

- 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스

 

배치 프로그램

배치 프로그램의 개요

- 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 작업을 일괄적으로 처리하는 것

- 배치 프로그램의 필수 요소 : 대용량 데이터, 자동화, 견고성, 안정성, 신뢰성, 성능

- 정기 배치 : 정해진 기간에 정기적으로 수행

- 이벤트성 배치 : 설정한 특정 조건이 충족될 때 수행

- On-Demand 배치 : 사용자 요청 시 수행

 

배치 스케줄러

- 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구

- 잡 스케줄러라고도 함

- 스프링 배치

    -> Spring Source 사와 Accenture 사가 공동 개발한 오픈소스 프레임워크

    -> 스프링 프레임워크의 특성을 그대로 가져와 스프링의 기능을 모두 사용할 수 있음

    -> 데이터베이스나 파일의 데이터를 교환하는데 필요한 컴포넌트를 제공

    -> 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등의 다양한 기능 제공

    -> 구성요소 : Job, Job Launcher, Step, Job Repository

- Quatz

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

    -> 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성을 제공

    -> 구성요소 : Scheduler, Job, JobDetail, Trigger

 

패키지 소프트웨어

패키지 소프트웨어의 개요

- 기업에서 일반적으로 사용하는 여러 기능을 통합하여 제공하는 S/W

- 기업에서는 패키지 소프트웨어를 구입하여 기업 환경에 적합하게 커스터마이징하여 사용

 

패키지 소프트웨어의 특징

- 요구사항을 분석하여 업무 특성에 맞게 전용으로 개발되는 S/W와 비교하여 안정성, 라이선스, 생산성 등의 차이가 있음

- 전문 업체에 의해 품질이 검증되었고 국제 산업계 표준을 준수하고 있어 안정적인 이용 가능

- S/W에 대한 라이선스가 판매자에게 있어 시스템 구축 후 기능 추가 및 코드 재사용 등에 제약이 있음

- 개발 조직을 갖추어야 할 필요성이 없어 비용을 절감할 수 있음

- 이미 개발된 S/W를 사용하기 때문에 프로젝트 기간 단축

필기 정리

 

2020 정보처리기사 필기 정리

본 정리 글은 시나공 정보처리기사 필기책과 학교 특강을 참고하여 작성하였습니다. -> 책 정보 확인하기 시나공 정보처리기사 필기 2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중..

1d1cblog.tistory.com

 

728x90

+ Recent posts