일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 기록
- 드림핵
- 자격증공부
- IT
- 보안용어
- DreamHack
- webhacking
- 워게임
- 보안
- 복습
- keyword
- 자격증
- Shell
- 클라우드
- 공부
- Review
- 정보처리기사
- 위험관리
- 케이쉴드주니어
- Linux
- 정리
- 리눅스마스터2급
- study
- 취약점진단
- Security
- it자격증
- reivew
- wargame
- 리눅스
- 웹해킹
- Today
- Total
IT Memory Note
[정보처리기사] 서버 프로그램 구현 : 개발환경 구축 본문
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) |
정해진 시간을 기준으로 그 이후에 변경된 파일만을 백업하는 방식 |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 서버 프로그램 구현 : 배치 프로그램 구현 (0) | 2024.08.21 |
---|---|
[정보처리기사] 서버 프로그램 구현 : 모듈 구현 (0) | 2024.08.21 |
[정보처리기사] SQL 응용 : 응용 SQL (0) | 2024.08.21 |
[정보처리기사] SQL 응용 : 데이터베이스 기본(4) (0) | 2024.08.21 |
[정보처리기사] SQL 응용 : 데이터베이스 기본(3) (1) | 2024.08.20 |