10. 애플리케이션 배포

dev_boy.log·2024년 5월 5일
0
post-thumbnail

<과정평가형 NCS 정보처리산업기사> 과년도 필기 출제 위주 정리


10. 애플리케이션 배포


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

597p ✍️ 컴파일 언어 (C, C++ 등)
: 컴파일 언어는 기계어로 바로 변환되어 실행되기 때문에 가장 속도가 빠르고 보안에 유리하지만 소스 변경 시마다 컴파일 과정을 통해서 빌드 작업을 수행하기 때문에 빌드 과정이 오래 걸림. 빌드 과정은 전처리기, 파싱, 번역, 어셈블리, 링킹 과정을 통해 진행됨
(소스코드) -> 전처리기 -> Parser -> (Parse Tree) -> Translation -> (Assembly) -> Assembler -> (Object File) -> Linker -> (Exe File) -> Loader -> 메모리 Image

598p ✍️ Byte Code 언어 (Java, C# 등)
: Byte Code 언어는 컴파일의 결과물이 실행파일이 아닌 'class'라는 바이트 코드 파일로 생성되고 가상 실행환경인 JRE(Java Runtime Environment), CLI(Common Language Infrasructure)에서 한 줄씩 실행하는 방식으로 빌드됨. JRE, CLI 환경에서 실행될 때 기계어로 변환되며 컴파일 언어에 비해 빌드 과정이 빠름

598p ✍️ 인터프리터 언어 (Javascript, Python, Ruby 등)
: 인터프리터 언어는 컴파일 언어와 다르게 한 줄씩 번역되어 실행됨. 컴파일 하는 과정에서 메모리가 훨씬 적게 소모되고 빠른 시간에 컴파일을 징행할 수 있음

599p ✍️ 웹 서버(Web Server)와 WAS(Web Application Server)의 차이

웹 서버(Web Server)와 WAS(Web Application Server)의 차이
웹 서버(Web Server)사용자의 http 요청을 받아 웹 컨테이너에 요청을 전달하고 결괏값을 받아야 사용자에게 전송하는 역할을 수행함. 애플리케이션 배포 시 이미지, 단순 HTML과 같은 정적인 리소스를 배포하며 정적 리소스를 빠르고 안정적으로 처리함
WAS(Web Application Server)사용자의 요청을 받아 동적인 처리를 수행하는 프로그램 실행 부분을 배보함. WAS 구성 및 운용을 위한 국제 표준 규격을 정하고 있으며 제품마다 배포 방시고가 설정이 일부 다름. 웹 애플리케이션의 경우 UI 배포 영역(JSP, Servlet 등)과 Biz 배포 영역(EJB, POJO 서비스 등)으로 구분되어 있음

599p ✍️ 애플리케이션 배포 단위
(1) jar(Java Archive) - Java 라이브러리, 리소스, property 파일들을 포함하고 있으며 프로그램에서 참조하는 라이브러리, 구현된 비즈니스 서비스를 배포할 때 jar 단위로 패키징하여 배포함
(2) war(Web Archive) - 웹 컨테이너에 배포되는 배포 형식으로 Servlet, jar 파일과 WEB-INF 폴더에 있는 web.xml 파일로 구성됨. 웹 컨테이너상에 배포되어 독립적인 UI단 웹 애플리케이션 서비스를 제공할 수 있음
(3) ear(Enterprise Archive) - jar와 war을 묶어서 하나의 완성된 웹 애플리케이션 서비스를 제공할 수 있음

600p ✍️ 형상관리
: 소프트웨어의 전체 생명 주기, 즉 계획부터 개발, 운영, 유지.보수, 폐기까지 발생하는 모든 활동을 지속적으로 관리하는 것. 이를 위해서는 형상항목들에 대해 식별 표시를 붙여 추적이 가능하게 ㅁ나들고, 형상항목들에 대한 변경을 제어하고 관리하는 프로세스가 필요함

600p ✍️ 리포지터리(Repository)
: 관리 대상을 형상관리 시스템으로 일괄 전송하여 압축, 암호화한 후에 저장, 관리 하는 저장 공간을 의미하고 일반적으로 업무 또는 디렉토리 단위로 구성됨

600p ✍️ 워크플로(Workflow)
: 형상관리 활동을 수행하기 위해 미리 정해진 절차가 형상관리 시스템 안에 구현되어 있는 것을 의미함

600p ✍️ 반출(Check Out)
: 형상항목을 변경하기 위해 형상 리포지터리로부터 전송받는 것을 의미하며 반출된 형상항목에 대해서는 잠금 상태가 유지됨

600p ✍️ 반입(Check In)
: 반출된 형상항목을 변경 후 다시 형상 리포지터리로 전송하는 것을 의미하며 반입 시 버전관리는 자동적으로 이루어짐


2. 애플리케이션 소스 검증하기

610p ✍️ 코드 인스펙션 Rule
(1) 애플리케이션의 성느엥 영향을 미칠 수 있는 코드를 점검하는 Rule로 메모리 누수, 미사용 변수, 메소드 여부 등을 확인하여 메모리를 낭비하는 코드를 식별함
(2) 개발언어에서 사전에 정의된 작성 규칙 또는 프로젝트 내에서 정의된 프로그램 명명규칙의 준수 여부를 점검하는 Rule, 작성 규칙을 미준수한 코드 내역을 추출하여 소스코드의 가독성을 향상시킴
(3) 애플리케이션 동작 중 에러 발생 가능성이 있는 코드를 점검하는 Rule

610p ✍️ 코드 작성 Rule 심각도 구분(예시)
(1) 필수, Blocker : 에러 발생 가능성이 매우 높거나 메모리 누수가 발생되는 코드로 반드시 수저오디어야하는 위반 사항
(2) 권고 상, Critical : 에러 발생 가능성이 높거나 일반적으로 수정되어야 하는 심각한 위반 사항
(3) 권고 중, Major : 에러 발생이 있거나 수정을 권고하는 주용 위반 사항
(4) 권고 하, Minor : 소스코드의 가독성, 유지.보수성 향상을 위해 수정을 권고하는 위반 사항
(5) 정보, Info : 정보성으로 제공되는 위반 사항으로 개발자가 참고하여 적용할 수 있음

611p ✍️ 정규 표현식 기본 문법

메타 문자의미설명
.문자
[ ]문자 클래스
[^]부정클래스 안의 문자를 제외한 나머지를 선택함. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed,fd 등을 포함하며, [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미함
^처음문자열이나 행의 처음을 의미함
$문자열이나 행의 끝을 의미함
( )하위식
\n일치하는 n번째 패턴
*0회 이상
{m, n}m회 이상, n회 이하

612p ✍️ Junit Assert 구문

제공 함수설명
assertArrayEquals(a,b)배열 a와 b가 일치함을 확인
assertEquals(a,b)객체 a와 b가 일치함을 확인
assertSame(a,b)객체 a와 b가 같은 객체임을 확인
assertTrue(a)a값이 참인지 확인
assertNotNull(a)객체 a가 null이 아님을 확인

3. 애플리케이션 빌드하기

623p ✍️ 테스트 커버리지
: 테스트 커버리지는 전체 프로그램의 범위 대비 테스트 수행 시 해당 테스트 수행을 위해 동작된 프로그램의 범위 비율

623p ✍️ 테스트 커버리지 측정 유형
(1) 라인 커버리지(또는 구문 커버리지) - 개발 소스의 각 라인이 수행되었는지를 확인하는 측정 지표
(2) 분기 커버리지 - 개발소스의 각 분기문이 수행되었는지를 확인하는 측정 지표로 만약 소스 내에 if문에 대한 true/false 조건이 있다면 두 가지 경우가 모두 테스트되어야 100%로 측정됨
(3) 조건 커버리지 - 각 분기문 내에 존재하는 조건식이 모두 테스트되었는지를 확인하는 측정 지표이며 조건식 간의 조합에 대해서는 체크하지 않음


4. 애플리케이션 배포하기

p ✍️ GIT

profile
baegopeunhankukin_anonymous goraebob (aka.maesaemusae) boyonn

0개의 댓글

관련 채용 정보