정보처리기사

[정보처리기사실기] 개발 환경 구축

PEAZH 2024. 7. 1. 11:21

1과목. 소프트웨어 구축

📒 10. 개발 환경 구축

 

계획 - 요구사항 분석 - 소프트웨어 - 구현 - 테스트 - 유지보수


1. 서버 환경 구축

(1) 웹 서버(WEB)

  • 클라이언트에게 정적 파일(HTML, CSS, JavaScript, 이미지 등)을 제공하는 서버
  • 대표적 : Apache Web Server, IIS, Nginx, GWS 등

(2) 웹 애플리케이션 서버(WAS)

  • 동적인 웹 서비스를 제공하기 위한 서버
  • 클라이언트의 요청에 따라 동적인 콘텐츠 생성 및 비즈니스 로직 처리 담당
  • 웹 서버는 WAS를 대체할 수 없지만 WAS는 가능함
  • 대표적 : WebLogic(사기업), WebSphere, Jeus(공기업), Tomcat(테스트용) 등

(3) 데이터베이스 서버(DBMS)

  • 데이터의 저장, 관리를 위한 서버
  • 대표적 : Oracle, MySQL, MS-SQL, MariaDB 등

(4) 파일서버

  • 사용자 파일을 저장하고 공유하는 데 사용되는 서버
  • 네트워크를 통한 파일의 접근 및 관리를 용이하게 함
  • 서버가 여러 개일 경우에도 한 파일을 다운로드할 수 있게 파일서버를 따로 만듦

(5) Load Balancer

  • 여러 대의 서버가 있을 경우, 네트워크 요청을 효율적으로 분배하는 장치
  • 앞단의 장치로 사용자들이 들어왔을 때 어떤 서버로 분산시킬지 정함
  • 분배 방식 : Random, Least loaded, Round Robin

(6) CDN(Content Delivery Network)

  • 대용량 콘텐츠(이미지, 비디오 등)를 빠르게 제공하기 위해, 사용자에게 물리적으로 가까운 위치에 있는 서버 네트워크를 사용함
  • 사용자가 원격 웹 서버보다 가까운 CDN 서버로부터 콘텐츠를 빠르게 받을 수 있음
  • 콘텐츠 분산 배치

(7) 시스템 아키텍처 고려사항

  • 확장성(Scalability), 성능(Performance), 응답시간(Response Time), 처리량(Throughtput), 접근성(Accessibility),
    일관성(Consistency), 보안(Security)

 

2. 시스템 소프트웨어

(1) 운영체제(OS, Operating System)

  • 컴퓨터의 하드웨어 운영을 관리하는 소프트웨어 
  • 대표적 : Windows, Linux, UNIX

(2) JVM(Java Virtual Machine)

  • 자바 관련 프로그램을 실행하기 위한 환경 제공
  • 다양한 운영체제에서 호환 가능하게 실행됨

(3) Web Server 프로그램

  • 정적 웹 서비스를 제공하는 미들웨어

(4) WAS(Web Application Server) 프로그램

  • 동적 웹 서비스를 제공하는 미들웨어

(5) DBMS 프로그램

  • 데이터의 저장, 관리, 검색 등을 위한 데이터베이스 소프트웨어

 

3. 개발 소프트웨어

(1) 요구사항 관리 도구

  • 고객의 요구사항을 수집, 분석, 추척하는데 사용
  • 요구사항을 적어둘 수 있는 특수한 게시판 형태로 모아둔 것

(2) 설계/모델링 도구

  • 소프트웨어의 구조와 기능을 시각적으로 표현하고 설계하는 데 사용
  • UML 지원으로 복잡한 시스템을 명확하게 모델링할 수 있음

(3) 구현도구(개발도구)

  • IDE(통합 개발 환경) 도구
  • 소프트웨어 개발 언어를 이용한 구현 및 개발 지원
  • Eclipse, InteliJ, Visual Studio 등

(4) 테스트 도구

  • 개발된 소프트웨어 모듈이 요구사항에 부합하는지 테스트하는 데 사용
  • JUnit, CppUnit, JMeter, SpringTest 등

(5) 형상관리 도구 ⭐

  • 소스 코드와 문서 등의 변경 사항을 버전별로 관리함
  • 변경 관리, 버전 관리 등 모두 포함
  • 협업 중인 개발자들 사이의 일관성 있는 작업 흐름을 지원하고, 변경 이력을 추적함
  • Git(분산 형상관리 도구), CVS, SVN 등

(6) 배포 도구

  • 소프트웨어 빌드, 테스트, 배포를 자동화하는 도구
  • Jenkins, Travis CI 등

 

4. IDE(Integrated Development Environment) 도구

(1) IDE 도구의 개념

  • 통합 개별 환경으로 소프트웨어 개발에 필요한 다양한 기능을 하나의 프로그램에서 제공하는 소프트웨어
  • 개발자의 편의성과 효율성 증대시키기 위해 설계

(2) IDE 도구의 종류

  • Eclipse, Visual Studio, Xcode, IntelliJ IDEA 등

(3) IDE 선정 시 고려사항

  • 적정성, 효율성, 이식성, 친밀성, 범용성

 

4. 협업 도구

(1) 협업 도구의 개념

  • 여러 사용자가 각자의 작업 환경에서 통합된 프로젝트를 동시에 수행할 수 있도록 지원하는 소프트웨어
  • 팀원 간의 소통과 협업을 용이하게 하는 도구

(2) 협업 도구의 종류

  • Slack, Microsoft Teams 등

 

5. 형상 관리 도구

(1) 형상 관리 도구의 개념

  • 소프트웨어 개발 과정에서 발생하는 모든 변경사항을 통제하고 관리하는 방법

(2) 변경 관리 / 버전 관리 / 형상 관리

  • a) 변경 관리
    - 소스코드의 변경 사항을 관리하며, 문서의 변경 이력과 복원 기능 제공
  • b) 버전 관리
    - 소프트웨어의 변경을 효과적으로 관리하며, 체크인/체크아웃 등 버전으로 관리
  • c) 형상 관리
    - 변경 관리와 버전 관리를 포함하며, 프로젝트를 전체적으로 관리하는 통합 시스템

(3) 형상 관리 절차 ⭐

  • a) 형상 식별
    - 관리해야 할 항목을 구분하고 번호나 태그를 부여
  • b) 형상 통제
    - 변경 요청을 검토하고 승인하여 현재의 기준선(Baseline)에 반영
    - 형상 통제 위원회(CCB, Configuration Control Board)의 승인을 통한 변경 통제가 이루어짐
  • c) 형상 감사
    - 변경이 계획에 따라 적절하게 이루어졌는지 검토
  • d) 형상 기록
    - 변경 사항과 처리 과정을 기록하고 관련된 이해 관계자에게 보고

 

6. 버전 관리 도구

(1) 버전 관리 도구의 개념

  • 개발 과정에서 발생하는 다양한 변경사항을 체계적으로 관리 및 이전 버전으로 복원할 수 있음

(2) 버전 관리 도구 유형

  • a) 공유 폴더 방식
    - 파일을 공유 폴더에 저장, 복잡한 협업에는 한계가 있음
    - ex. RCS, SCCS
  • b) 클라이언트/서버 방식
    - 개발자들이 소스 코드를 변경하면 서버에 전달하여 주고받을 수 있는 방식
    - 중앙 서버에 버전 관리 시스템이 항시 운영되며, 개발자들은 이 시스템과 연동하여 작업
    - ex. CVS, SVN
  • c) 분산 저장소 방식
    - 중앙 저장소와 로컬 저장소가 별도로 존재하며, 로컬에서 작업 후 중앙 저장소에 반영하는 방식
    - ex. Git

(3) 버전 관리 도구별 특징

  • a) CVS
    - 오래 사용된 형상 관리 도구로, 중앙에 위치한 저장소에 파일을 저장
    - 커밋 중 오류 발생 시 롤백되지 않음
  • b) SVN 
    - CVS의 단점을 보완한 버전 관리 도구
    - 최초 1회 파일 원본을 저장한 후, 변경사항만 기록함
    - 커밋 실패 시 롤백이 가능하며, 형상 관리가 보다 체계적
    - Trunk, Branches, Tags 구조로 형상 관리를 수행하며, 원하는 시점으로 복구가 가능함
  • c) Git
    - 로컬에서의 빠른 성능과 분산 환경 코딩에 최적화되어 있음
    - 분산 버전 관리 시스템으로 다양한 브랜치를 생성하고 관리할 수 있음

(4) 버전 관리 주요 용어

  • Repository : 저장소
  • Checkout : Repository에서 로컬로 프로젝트 복사
  • Commit : 로컬의 변경된 내용을 Repository에 저장
  • Update : Repository에 있는 내용을 로컬에 반영
  • Add : 로컬에서 새로운 파일이 추가되었을 때 Repository에 등록
  • Trunk : Root 프로젝트
  • Branch : Root 프로젝트에서 파생된 프로젝트
  • Merge : Branch에서 진행하던 작업을 Root 프로젝트와 합침(파일을 합치는 것)
  • Diff : 파일의 비교

 

7. 빌드 도구

(1) 빌드 도구의 개념

  • 소스코드 파일들을 컴파일하고, 다른 필요한 과정들을 거쳐 실행 가능한 소프트웨어로 변환하는 일련의 과정
  • 빌드 과정을 자동화하고 최적화하는 도구

(2) 빌드 자동화 프로세스

  • a) 빌드
    - 개발자가 소스코드를 저장소에 커밋하면, 변경 사항이 통합 환경에 자동으로 통합됨
  • b) 테스트
    - Jenkins, Ansible 등의 도구가 새 코드를 인식하여 자동으로 일련의 테스트를 수행함
  • c) 배포
    - 테스트를 통과한 소프트웨어는 운영 환경에 자동으로 배포되어 최종 사용자에게 제공됨

(3) 빌드 자동화 도구 종류

  • a) Make
    - Unix 계열 운영체제에서 주로 사용되는 전통적인 프로그램 빌드 도구
  • b) Ant
    - Java 기반의 빌드 도구로, XML 기반의 빌드 스크립트 사용
  • c) Maven
    - 의존성 관리와 프로젝트 라이프 사이클 관리에 강점을 가진 Java 기반 빌드 도구
    - pom.xml 파일을 통해 라이브러리 의존성을 관리하며, 필요한 라이브러리를 자동으로 다운로드함
  • d) Jenkins
    - Java 기반의 오픈소스로, 지속적인 통합 서비스 도구
    - 다양한 플러그인을 지원하고, 서블릿 컨테이너에서 실행
    - 분산 빌드 환경을 지원하여 대규모 프로젝트에 적합
  • e) Gradle
    - Groovy 기반의 오픈 소스 빌드 자동화 도구
    - 안드로이드 앱, Java, C/C++, Python 등 다양한 언어의 빌드 지원

 

참고자료

흥달쌤,  '흥!나게 합격 달성! 2024 정보처리기사 실기 클래스'
 

1억뷰 N잡

[1회 연장 포함] 흥!나게 합격 달성! 2024 정보처리기사 실기 클래스

www.njobler.net