본문 바로가기

과정평가형 정보처리산업기사

애플리케이션 배포환경 구성하기

1-1. 소스코드 빌드 과정의 이해

빌드는 프로그래머가 작성한 소스코드를 실행할 수 있는 상태로 변환하는 과정

 

컴파일 언어 (C, C++ 등)

컴파일 언어는 기계어로 바로 변환되어 실행되기 때문에 가장 속도가 빠르고 보안에 유리함

소스 변경 시마다 컴파일 과정을 통해 빌드 작업을 수행하기에 빌드 과정이 오래 걸림

빌드 과정은 전처리기, 파싱, 번역, 어셈블리, 링킹 과정을 통해 진행

더보기

전처리기 -> 파싱 -> 번역 -> 어셈블리 -> 링킹

 

Byte Code 언어(Java, C# 등)

Byte Code 언어는 컴파일의 결과물이 실행파일이 아닌 'class'라는 바이트 코드 파일로 생성되고 가상 실행환경인 JRE(Java Runtime Environment), CLI(Common Language Infrastructure)에서 한 줄씩 실행하는 방식으로 빌드됨

JRE, CLI 환경에서 실행될 때 기계어로 변환되며, 컴파일 언어에 비해 빌드 과정이 빠름

 

인터프리터 언어(Javascript, Python, Ruby 등)

컴파일 언어와 다르게 한 줄씩 번역되어 실행됨

컴파일하는 과정에서 메모리가 훨씬 적게 소모되고 빠른 시간에 컴파일을 진행함

 

1-2. 에플리케이션 배포(Release) 환경

개발자 또는 사용자가 애플리케이션을 실행, 테스트 할 수 있도록 컴파일된 프로그램, 실행에 필요한 리소스(이미지, 환경 설정, 파일 등)를 서버상에 적합한 위치로 이동하는 작업

 

  1. 웹 서버 (Web Server) : 사용자의 http 요청을 받아 웹 컨테이너에 요청을 전달하고 결괏값을 받아와 사용자에게 전송하는 역할, 정적 리소스를 빠르고 안정적으로 처리
  2. WAS(Web Application Server) : 사용자의 요청을 받아 동적인 처리를 수행하는 프로그램 실행 부분을 배포함, 제품마다 배포 방식과 설정이 일부 다름, 웹 애플리케이션의 경우 UI배포 영역(JSP, Servlet 등)과 Biz.배포 영역(EJB, POJO 서비스 등)으로 구분되어 있음

 

1-3. 에플리케이션 배포 단위

애플리케이션은 배포 시 단순히 컴파일된 실행 파일 또는 Byte Code를 복사하는 방식 이외에 다양한 단위로 묶음, 패키징을 통해 배포할 수 있음

Java의 경우 jar, war, ear 등의 방식으로 패키징하여 배포할 수 있음

 

  1. jar(Java Archive) : Java 라이브러리, 리소스, property 파일들을 포함
  2. war(Web Archive) : 웹 컨테이너에 배포되는 배포 형식 (Servlet, jar, web.xml) , 웹 컨테이너상에 배포되어 독립적인 UI단 웹 애플리케이션 서비스를 제공할 수 있음
  3. ear(Enterprise Archive) : jar과 war을 묶어서 하나의 완성된 웹 애플리케이션 서비스를 제공할 수 있음

 

1-4. 형상관리(Configuration Managerment)  시스템

형성관리시스템은 서비스 제공 대상 형상항목을 식별하여 기준선(Baseline)을 설정하고, 형상학목 변경 과정에서 점검, 검증 등의 체계적인 통제를 통해 형상 학목 간의 일관성과 추적성을 확보하기 위한 시스템

 

용어

  1. 형상관리 (Configuration Management) : 소프트웨어의 전체 생명 주기, 즉 계획부터 개발, 운영, 유지보수, 폐기까지 발생하는 모든 활동을 지속적으로 관리하는 것
  2. 형상항목(Configuration Item) : 형상관리 대상이 되는 항목 (소스 파일, 문서 등)
  3. 기준선(Baseline) : 공식적으로 검토되고 협의되어 향후 기준이 되는 형상항목의 집합체
  4. 마이그레이션(Migration) : 개발 완료된 시스템이 운영 단계로 전환될 때 관련 소스 파일을 저장 공간(리포지터리)으로 이관시키는 작업
  5. 리포지터리(Repository) : 관리 대상을 형상 관리 시스템으로 일괄 전송하여 압축, 암호화한 후에 저장, 관리하는 저장 공간
  6. 워크플로(Workflow) : 형상 관리 활동을 수행하기 위해 미리 정해진 절차가 형상 관리 시스템 안에 구현되어 있는 것
  7. 반출(Check Out) : 형상 항목을 변경하기 위해 형상 리포지터리로부터 전송 받은 것을 의미
  8. 반입(Check In) : 반출된 형상 항목을 변경 후 다시 형상 리포지터리로 전송하는 것

 

 

2-1. 애플리케이션 소스 검증

검증도구의 구분

소스코드 검증도구는 구현된 SW를 실행하지 않고 테스트하는 정적 테스트 도구와 구현된 SW를 실행하여 동작을 보면서 테스트하는 동적 테스트 도구로 구분

 

소스코드 검증도구의 용도

  1. 정적 테스트 도구 사용 목적 : 정적 테스트 도구는 테스트하기 전에 코딩 오류. 성능 저하, 보안 취약점 등의 결함을 조기에 발견할 수 있도록 지원
  2. 동적 테스트 도구 사용 목적 : 테스트 미수행 코드를 확인하고 특정 유형의 코드 구조가 충분히 테스트 되었는지를 확인해  추가적인 테스트를 진행함 (안정성을 제공하고, 소스 품질 관리 활동을 할 수 있음)

코드 인스펙션(Code Inspection)

정적 테스트의 유형으로, 사전에 정의된 코드 작성 규칙 기반으로 소스코드를 점검하고 규칙에 위반되는 소스코드를 추출하는 분석 도구

 

코드 인스펙션 Rule 유형

  1. 성능 개선 : 애플리케이션의 성능에 영향을 미칠 수 있는 코드를 점검하는 Rule
  2. 코드 작성 규칙 : 개발언어에서 사전에 정의된 작성 규칙 또는 프로젝트 내에서 정의된 프로그램 명명규칙의 준수 여부를 점검하는 Rule
  3. 에러 발생 가능성 : 애플리케이션 동작 중 에러 발생 가능성이 있는 코드를 점검하는 Rule

코드 작성 Rule 심각도 구분

  1. 필수, Blocker (메모리 누수가 발생되는 코드)
  2. 권고 상, Critical (일반적으로 수정되어야 함)
  3. 권고 중, Major (에러 발생이 있거나 수정을 권고)
  4. 권고 하, Minor (가독성, 유지 보수성 향상위한 수정 권고)
  5. 정보, Info (정보성으로 제공되는 위반 사항)

정규 표현식

메타문자 의미 설명
. 문자 1개의 문자와 일치, 새줄 문자를 제외(단일행)
[] 문자 클래스 '[' 과 ']' 사이의 문자 중 하나를 선택
[^] 부정 클래스 안의 문자를 제외한 나머지
^ 처음 문자열이나 행의 처음
$ 문자열이나 행의 끝
() 하위식 여러 식을 하나로 묶음
\n 일치하는 n 번째 패턴 일치하는 패턴들 중 n 번째를 선택
* 0회 이상 0개 이상의 문자를 포함 "a*b"는 "b", "ab", "aab", "aaab"를 포함
{m,n} m회 이상 n회 이하 "{1,3}b" 는 "ab", "aab", "aaab"를 포함하지만 "b"나 "aaaab"는 포함하지 않음

 

2-2. 애플리케이션 빌드

지속적인 통합(CI:Continuous Intergration) 환경

애플리케이션 개발 과정 중 지속적으로 개발된 프로그램을 통합, 빌드, 배포하여 애플리케이션의 개발 내역을 검증, 테스트할 수 있는 환경

 

  1. 빌드 도구 : 애플리케이션의 배포 단위, 형식에 따라 소스코드를 컴파일, 패키징하며, 배포하는 스크립트를 제공(Ant, Maven 등)
  2. 테스트 도구 : 개발된 소스코드를 테스트할 수 있는 테스트 코드를 작성, 동작시킬 수 있는 도구로, 통합빌드 수행 시 연결할 수 있음 (Junit, DBUnit, StructsTestCase 등)
  3. 소스코드 품질 측정도구 : 정해진 소스코드 작성 규칙에 따라 소스코드를 점검하고 규칙 위반 여부를 체크하는 도구
  4. 테스트 커버리지 측정도구 : 소스코드 내 테스트 가능한 경로 중 테스트 도구를 통해서 테스트된 커버리지를 측정하는 도구 (Clover, JCoverage, ElcEmma 등)
  5. 빌드 스케줄 관리도구 : 작성된 빌드 스크립트를 정해진 조건, 시간에 기동하고 진행 상태, 수행 결과를 관리하는 도구(Anthill, CruiseControl. Hudson 등)

 

테스트 커버리지

전체 프로그램의 범위 대비 테스트 수행 시 해당 테스트 수행을 위해 동작된 프로그램의 범위 비율

 

테스트 커버리지 측정 유형

  1. 라인 커버리지(또는 구문 커버리지. Statement Coverage)
  2. 분기 커버리지(Decision Coverage)
  3. 조건 버커리지(Condition Coverage)

 

2-3. 빌드 스케줄 관리 도구

빌드 스케줄 관리 도구는 별도의 웹 애플리케이션으로 구성되어 웹 서버상에 배포되고, 관리자 화면을 통해서 빌드 스크립트, 형상관리 도구 등과 연계되며, 이메일을 통해서 관련 개발자. 관리자들에게 빌드 수행 결과를 제공

 

빌드 스케줄 관리도구의 기능

  1. 빌드 작업 스케줄링 : 빌드 작업의 작업 주기. 작업 시간 설정
  2. 빌드 작업 상태 및 이력 관리 : 빌드 진행 상태를 대기, 진행, 완료, 오류 유형으로 구분
  3. 빌드 도구 연계 관리 : 빌드 작업 수행을 위해 기작성된 빌드 스크립트와 접근 가능한 형상관리 도구를 연계 설정
  4. 빌드 수행 결과 리포팅 : 오류 사항, 인스펙션 점검 결과, 테스트 구행 결과 등을 웹 화면을 통해 보여주고 관련자들이 리포팅을 제공

 

 

3-1. 애플리케이션 배포

  1. 네트워크 관점 : 운영 환경은 일반적으로 인터넷망과 분리되어 직접적인 연결을 허용하지 않으며, 별도의 내부망을 구성하고 방화벽을 통해서 인가된 IP를 통해서만 접근을 허용함
  2. 계정 관리 부문 : 접근 계정을 별도 IP 관리시스템을 통해서 관리하고 있으며, 정부의 보안 관리 기준에 따라 정기적으로 패스워드를 변경하는 형태로 관리
  3. 보안 취약점 부문 : 해킹 위협의 증가로 기업의 운영환경은 다양한 보안 취약점 점검을 주기적으로 수행하고 보안 취약점을 보완

 

프로그램 통제 부문 전자 금융 감독 규정

  1. 적용 대상 프로그램 종류 및 등록, 변경, 폐기 방법을 마련
  2. 프로그램 변경 전후 내용을 기록, 관리할 것
  3. 프로그램 등록, 변경, 폐기 내용의 정당성에 대해 제3자의 검증을 받을 것
  4. 변경 필요시 해당 프로그램을 개발 또는 테스트 시스템으로 복사 후 수정할 것
  5. 프로그램에 대한 접근은 업무 담당자에 한정할 것
  6. 운영 시스템 적용은 처리하는 정보의 기밀성, 무결성, 가용성을 고려하여 충분한 테스트 및 관련 책임자 승인 후에 실시할 것
  7. 프로그램 반출, 실행 프로그램의 생성 및 운영 시스템 등록은 전산 자료 관리자 등 해당 프로그램 담당자 이외의 사람이 수행할 것
  8. 운영체제, 데이터베이스 관리 프로그램 등의 시스템 프로그램도 응용 프로그램과 동일한 수준으로 관리할 것
  9. 프로그램 설명서, 입출력 레코드 설명서, 프로그램 목록 및 사용자, 운영자 지침서 등 프로그램 유지,보수에 필요한 문서를 작성,관리할 것
  10.  전자 금융 거래에 사용되는 전산 프로그램은 실제 업무를 처리하는 정보 처리 시스템에 설치하기 전에 자체 보안성 검증을 실시할 것

'과정평가형 정보처리산업기사' 카테고리의 다른 글

라이브러리 활용  (0) 2023.05.04
구조적 프로그래밍 언어 활용  (0) 2023.05.02