정보처리/프로그래밍언어활용

서버 프로그램 구현 개발환경 구축

피갓자 2025. 5. 9. 09:00
서버 프로그램 구현 개발환경 구축
서버 프로그램 구현 개발환경 구축

개발 환경 구축

개발환경 구축의 개념

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

개발 도구의 분류

드 도구

  • 작성한 코드의 빌드 및 배포를 수행하는 도구
  • 각각의 구성요소와 모듈에 대한 의존성 관리를 지원
  • Ant, Maven, Gradle

현 도구

  • 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
  • 프로그램을 개발할 때 가장 많이 사용되는 도구
  • Eclipse, IntelliJ, Spring Tool Suite, NetBeans, Visual Studio

스트 도구

  • 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
  • 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능
  • xUnit, PMD, Findbugs, Cppcheck, Sonar

상 관리 도구

  • 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
  • 프로젝트 진행 시 필수로 포함되는 도구

개발환경 구성요소

하드웨어 개발환경

서버 하드웨어 개발환경

웹 서버

  • HTTP를 이용한 요청/응답을 처리
  • 웹상의 정적 콘텐츠(CSS, Javascript, Image)를 처리
  • WEB-WAS(Web Application Server)-DB의 3계층 구조를 실무에서 활용
  • 주요 제품으로 Apache 웹 서버, IIS 웹 서버, Google Web Server, Nginx 등 존재

웹 애플리케이션 서버

  • 동적 콘텐츠(Servlet, JSP)를 처리하기 위해 사용
  • 주요 제품으로 Tomcat, Weblogic, Jeus, Resin 등 존재

데이터베이스 서버

  • 데이터의 수집, 저장을 위한 용도로 사용
  • 연계되는 주요 DBMS로 MySql, Oracle, MS-SQL, DB2 등 존재

파일 서버

  • 파일 저장 하드웨어로 물리 저장 장치를 활용한 서버
  • 대용량 HDD, SSD 등의 장치가 존재

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

클라이언트 프로그램

  • 설치를 통해 사용자와 커뮤니케이션하는 프로그램
  • Visual Basic, C#, Delphi 등으로 개발되어 사용

웹 브라우저

  • 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답할 때 브라우저를 통해 사용자와 커뮤니케이션
  • 일반적인 형태의 웹 사이트가 해당

모바일 앱

  • 모바일 디바이스에 설치되어 활용되는 애플리케이션
  • 앱 스토어, 안드로이드 마켓 등을 통해 다운로드 가능

모바일 웹

  • 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스를 제공
  • 모바일에 최적화되어 제공되는 웹사이트가 해당

소프트웨어 개발환경

운영체제

  • 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
  • 프로젝트의 성격에 따른 운영체제 사용
  • Windows, Unix, Linux

미들웨어

  • 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 해주고 이에 대한 관리를 도와주는 소프트웨어
  • 자바 기반 환경에서 JVM(Java Virtual Machine)을 설치하여 컨테이너(Container)로의 기능을 주로 이용
  • Weblogic, Websphere, Jeus, Tomcat

DBMS

  • 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고, 데이터베이스를 관리해 주는 소프트웨어
  • 데이터의 저장 및 활용을 위해 DBMS를 설치

형상 관리

형상 관리(Configuration Management)의 개념

  • 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
  • SW 생명 주기 동안 형상 관리를 통해 산출물을 체계적으로 관리하여 SW의 가시성, 추적성, 무결성 등의 품질 보증을 보장할 수 있음

형상 관리의 목적

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

형상 관리의 절차

형상

  • 형상 관리 대상을 정의 및 식별하는 활동
  • 추적성 부여를 위해 ID와 관리 번호를 부여
  • 변경 관련 이슈 발생 시 ID와 관리 번호를 이용하여 추적

형상

  • 형상 항목의 버전 관리를 위한 형상통제위원회(CCB, Configuration Control Board) 운영
  • 변경 요구 관리, 변경 제어, 형상 관리 등 통제 지원
  • 베이스라인에 대한 관리 및 형상 통제 수행 가능

형상

  • 소프트웨어 베이스라인의 무결성 평가
  • 베이스라인 변경 시 요구사항과 일치 여부 검토

형상

  • 소프트웨어 형상 및 변경 관리에 대한 각종 수행 결과를 기록
  • 형상 결과 보고서 작성

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

유 폴더 방식(RCS, SCCS)

  • 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
  • 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동작 여부 확인
  • 정상 동작일 경우 다음날 각 개발자가 동작 여부 확인

라이언트/서버 방식(CVS, SVN)

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

산 저장소 방식(Git 등)

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

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

CVS(Concurrent Versions System)

  • 서버와 클라이언트로 구성되어 있고, 다수의 인원이 동시에 범용적인 운영체제로 접근할 수 있는 형상 관리 도구

SVN(Subversion)

  • 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구
  • 저장소를 만들어 그곳에 소를 저장해 소스 중복이나 여러 문제를 해결하기 위한 도구

RCS(Revision Control System)

  • CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 여러 사용자가 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구

Bitkeeper

  • SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구

Git

  • Git의 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에서 효과적이고 유용
  • Git의 커밋(Commit) 동작은 로컬 저장소에서 이루어지고, 푸시(Push)라는 동작으로 원격 저장소에 반영
  • 로컬 저장소에서 작업이 이루어져 매우 빠른 응답을 받을 수 있음
  • Git의 작업 폴더는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하는 완전한 형태의 저장소

Clear Case

  • 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음