IT Memory Note

[정보처리기사] 서버 프로그램 구현 : 개발환경 구축 본문

자격증/정보처리기사

[정보처리기사] 서버 프로그램 구현 : 개발환경 구축

h00ddu 2024. 8. 21. 08:16

 

1️⃣ 개발환경 구축

 


(1) 개발환경 구축의 개념

 

  • 개발환경 구성 시 구현될 시스템 요구사항의 명확한 이해가 필요함
  • 개발 도구와 서버의 선정이 이루어져야 하고, 개발에 사용되는 도구들의 사용 편의성과 성능, 라이선스를 확인함

 

(2) 개발 도구의 분류

 

구분 설명
빌드 도구 작성한 코드의 빌드 및 배포를 수행하는 도구
 각각의 구성요소와 모듈에 대한 의존성 관리를 지원
구현 도구 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
프로그램을 개발할 때 가장 많이 사용되는 도구
테스트 도구 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능
형상 관리 도구 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
 프로젝트 진행 시 필수로 포함되는 도구

 


 

(3) 개발환경 구성요소

 

1. 하드웨어 개발환경

 

⓵ 서버 하드웨어 개발환경

 

웹 서비스 하드웨어 구성도

구분 설명
웹 서버
(Web Server)
HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램
웹 상의 정적 콘텐츠(CSS, JavaScript, Image)를 처리
WEB-WAS-DB의 3계층 구조를 실무에서 활용
주요 제춤으로 Apache 웹 서버, IIS 웹 서버, Google Web Server, Nginx 등 존재
웹 애플리케이션 서버
(WAS, Web Application Server)
서버 계층에서 애플리케이션이 동작할 수 있는 환경을 제공하고 안정적인 트랜잭션 처리와 관리, 다른 이기종 시스템과의 애플리케이션 연동을 지원하는 서버
동적 콘텐츠(Servlet, JSP)를 처리하기 위해 사용
주요 제품으로 Tomcat, Weblogic, Jeus, Resin 등 존재
데이터베이스 서버
(Database Server)
데이터 수집, 저장을 위한 용도로 사용하는 서버
연계되는 주요 DBMS로 MySQL, Oracle, MS-SQL, DB2 등 존재
파일 서버
(File Server)
파일을 저장하고 관리하기 위한 서버
대용량 HDD, SSD 등의 장치가 존재

 


⓶ 클라이언트 하드웨어 개발환경

 

  • 서버 개발환경에서 제공된 서비스를 사용하기 위해 UI를 제공함

< 클라이언트 하드웨어 개발환경의 구분 >

구분 설명
클라이언트 프로그램  설치를 통해 사용자와 커뮤니케이션하는 프로그램
Visual Basic, C#, Delphi 등으로 개발되어 사용
웹 브라우저 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
일반적인 형태의 웹 사이트가 해당
모바일 앱 모바일 디바이스에 설치되어 활용되는 애플리케이션
앱스토어, 안드로이드 마켓 등을 통해 다운로드 가능  
모바일 웹  웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스를 제공
 모바일에 최적화되어 제공되는 웹 사이트가 해당

※ 안드로이드(Android) : 리눅스 커널을 기반으로 스마트폰을 위한 미들웨어와 사용자 인터페이스, 중요 애플리케이션이 포함된 구글이 개발한 OS


2. 소프트웨어 개발환경

 

  • 개발을 위한 기본적인 소프트웨어 개발환경을 선택 및 구성함
  • 큰 틀에서 프로젝트 요구사항에 부합한 OS, 미들웨어, DBMS를 선정함

소프트웨어 개발환경 구성분류

< 소프트웨어 개발환경의 구분 >

구분 설명
OS 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
 프로젝트의 성격에 따른 운영체제 사용
미들웨어 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 해주고 이에 대한 관리를 도와주는 소프트웨어
 자바 기반 환경에서 JVM을 설치하여 컨테이너로의 기능을 주로 이용
DBMS 사용자와 DB 사이에서 사용자 요구에 따라 정보를 생성해주고, DB를 관리해주는 소프트웨어
데이터 저장 및 활용을 위해 DBMS를 설치

※ JVM(Java Virtual Machine) : 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공하는 소프트웨어

※ 컨테이너(Container) : JSP와 서블릿을 실행시킬 수 있는 소프트웨어


 3. 형상 관리(Configuration Management)

 

⓵ 형상 관리의 개념

 

  • 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경사항을 관리하기 위한 활동

형상 관리 개념도

  • SW 생명 주기 동안 형상 관리를 통해 산출물을 체계적으로 관리하여 SW의 가시성, 추적성, 무결성 등의 품질 보증을 보장할 수 있음

⓶ 형상 관리의 목적

 

  • 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성을 확보할 수 있음
  • 프로젝트 변경이 발생되었을 때 처리하는 메커니즘을 제공함
  • 대표적인 메커니즘 : 형상 관리대상 파악, 베이스라인 지정, 형상 관리, 근제어 등

※ 베이스라인(Baseline) : 개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준


⓷ 형상 관리의 절차

 

절차 설명
형상 식별  형상 관리 대상을 정의 및 식별하는 활동
추적성 부여를 위해 ID와 관리번호를 부여
변경 관련 이슈 발생 시 ID와 관리번호를 이용하여 추적
형상 통제  변경요구 고나리, 변경제어, 형상 관리 등의 통제를 지원하는 활동
형상 항목의 버전 관리를 위한 형상통제위원회 운영
베이스라인에 대한 관리 및 형상 통제 수행 가능
형상 감사  소프트웨어 베이스라인의 무결성을 평가하는 활동
베이스라인 변경 시 요구사항과 일치 여부 검토
형상 기록  소프트웨어 형상 및 변경관리에 대한 각종 수행결과를 기록하는 활동
 베이스라인 변경 시 요구사항과 일치 여부 검토

※ 형상통제위원회(CCB, Configuration Control Board) : 형상 관리에 대한 주요 방침을 정하고 산출물을 검토하며, 단계별 의사결정을 수행하는 조직


⓸ 소프트웨어 형상 관리 도구의 유형

 

  • 초기의 소프트웨어 형상 관리 도구는 공유 폴더 방식을 많이 활용하였지만, 최근에는 클라이언트/서버 방식과 분산 저장소 방식이 많이 활용됨
유형 설명
공유 폴더 방식
(RCS, SCCS)
 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
담당자 1명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동작 여부 확인
정상 동작일 경우 다음날 각 개발자들이 동작 여부 확인

클라이언트/서버 방식
(CVS, SVN)
 중앙에 버전 관리 시스템을 항시 동작시키는 방식
 개발자들의 현재 작업 내용과 이전 작업내용 추적에 용이
 서로 다른 개발자가 같은 파일을 작업했을 때 경고 메시지 출력

분산 저장소 방식
(Git 등)
 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
중앙의 저장소에서 로컬 파일을 복사(Clone)한 순간 개발자 자신만의 로컬 저장소에 생성
개발완료한 파일을 수정한 다음에 로컬 저장소에 우선적으로 커밋(Commit)한 이후, 다시 원격 저장소에 반영(Push)하는 방식

 

⓹ 소프트웨어 형상 관리 도구별 특징

 

  ㉮ RCS(Revision Control System) CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구


  ㉯ CVS(Concurrent Versions System) : 가장 오래된 형상 관리 도구 중의 하나로서 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행하는 형상 관리 도구

 

< CVS의 주요 기능 >

주요 기능 설명
변경사항 동기화 Check-Out, Check-In, Update, Commit 등 서버 저장소와 클라이언트의 변경사항 전송 기능 제공
파일 단위 관리 파일 단위로 변경사항 관리가 가능, diff를 통한 파일 내용의 비교

 


  ㉰ SVN(Subversion) : 중앙 집중형 클라이언트-서버 방식으로 CVS의 단점을 보완해 가장 널리 사용되고 있는 형상 관리 도구

 

< SVN의 주요 기능 >

주요 기능 설명
CVS 기능 제공 CVS의 대부분 명령어 수행 가능
바이너리 파일 관리 CVS에서는 텍스트 기반 파일만 가능했지만, SVN은 실행 파일과 같은 바이너리 파일 지원
롤백 기능 지원 커밋 실패 시 롤백 가능

 


  ㉱ Git : 리누스 토발즈가 2005년 리눅스 커널의 개발을 위해 만든 형상 관리 시스템

< Git의 주요 기능 >

주요 기능 설명
로컬 / 원격 형상 관리  로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 도구
Branch, Check-Out, Commit 등 로컬 환경에서의 형상 관리 기능 제공
Push, Fetch, Pull 등 원격 환경에서의 형상 관리 기능 제공
롤백 기능 지원 커밋 실패 시 롤백 가능

 


4. 백업(Backup)


⓵ 백업의 개념

 

  • 중요한 데이터나 정보를 안전하게 보관하기 위한 데이터를 복제하는 기법

⓶ 백업의 유형

 

유형 설명
전체 백업
(Full Backup)
백업받고자 하는 데이터 전체에 대해 백업하는 방식
차등 백업
(Differential Backup)
마지막 전체 백업 이후 변경된 모든 데이터를 백업하는 방식
증분 백업
(Incremental Backup)
정해진 시간을 기준으로 그 이후에 변경된 파일만을 백업하는 방식