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

    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

     

     

    댓글