정보처리기사

[정보처리기사] 소프트웨어 구축 (3)

hminor 2023. 7. 4. 21:53

개발 환경 구축

  • 서버 환경 구축
    • 웹 서버(WEB)
      • 클라이언트에게 정적 파일(HTML, CSS, JS, Image)을 제공하는 웹 서버 애플리케이션이 설치된 하드웨어
      • Apache Web Server, IIS, Nginx, GWS 등
    • 웹 어플리케이션 서버(WAS)
      • 동적인 웹 서비스를 제공하기 위한 미들웨어로 설치된 하드웨어
      • WebLogin, WebSpere, Jeus, Tomcat 등
    • 데이터베이스 서버(DBMS)
      • 데이터의 저장과 관리를 위한 데이터베이스 소프트웨어가 설치된 하드웨어
      • Oracle, MySQL, MS-SQL 등
    • 파일서버
      • 사용자의 파일을 저장하고, 파일을 목적으로 구성된 하드웨어
    • Load Balancer
      • L4 switch
        • 여기서 OSI7계층에서 사용되는 Layer 확인
          • L2: 집선으로 컴퓨터를 연결
          • L3: Router
          • L4: Load Balancer, 배분
          • L7: 보안 기능
      • 여러 대의 서버가 존재할 경우 요청을 적절히 분배해주는 역할
      • 분배 방식
        • Random: 무작위
        • Least Loaded: 가장 적은 양의 작업을 처리하고 있는 서버에게 요청을 할당
        • Round Robin: 순서를 정해 돌아가며 작업 분배
    • CDN(Content Delivery Network)
      • 용량이 큰 콘텐츠 데이터(이미지, 비디오 등)를 빠른 속도로 제공하기 위해 사용자와 가까운 곳에 분산되어 있는 데이터 저장 서버
  • 개발 소프트웨어 환경
    • 시스템 소프트웨어
      • 운영체제(OS, Operating System)
        • 하드웨어 운영을 위한 운영체제
        • Windows, Linux, UNIX 등의 환경으로 구성됨
      • JVM(Java Virtual Machine)
        • Java 관련 프로그램을 기동하기 위한 환경
        • 모든 개발자가 동일한 버전을 적용하는 것이 좋다.
      • Web Server
        • 정적 웹 서비스를 수행하는 미들웨어
        • 웹 브라우저 화면에서 요청하는 정적 파일을 제공한다.
        • Apache, IIS, Nginx, GWS 등
      • WAS
        • 동적 웹 서비스를 수행하는 미들웨어
        • WebLogic, Tomcat, Jeus, WebSpere 등
      • DBMS
        • 데이터 저장과 관리를 위한 데이터베이스
        • Oracle, MySQL, MS-SQL 등
    • 개발 소프트웨어
      • 요구사항 관리 도구
        • 고객의 요구사항을 수집, 분석, 추적을 쉽게 할 수 있도록 지원한다.
      • 설계/모델링 도구
        • 기능을 논리적으로 표현할 수 있는 통합 모델링 언어(UML) 지원
        • 그림 그리는 도구
      • 구현도구
        • 소프트웨어 언어를 통해 구현 및 개발을 지원하는 도구
        • 실제 개발하는 도구
        • VSCode, IntelliJ 등
      • 테스트 도구
        • 개발된 모듈들에 대하여 요구사항에 적합하게 구현되어 있는지 테스트를 지원하는 도구
        • JUnit(Java 테스트 도구), CppUnit, JMeter, SpringTest 등
      • 형상관리 도구
        • 산출물 및 소스코드의 변경사항을 버전별로 관리하여, 목표 시스템의 품질 향상을 지원하는 도구
        • Git, CVS, SVM 등
  • 협업 도구
    • 협엽 도구의 개념
      • 여러 사용자가 각기 별개의 작업 환경에서 통합된 하나의 프로젝트를 동시에 수행할 수 있도록 도와주는 소프트웨어
    • 협업 도구 도입 프로세스
      • 문제정의
      • 문제에 대한 솔루션, 기대효과 정의
      • 협업 도구 분석
      • 협업 도구 최종 선정
  • 형상 관리 도구
    • 형상 관리 도구의 개념
      • 소프트웨어 생명주기 동안 발생하는 변경사항을 통제하기 위한 관리 방법
      • 소프트웨어의 변경사항을 체계적으로 관리하는 것
    • 관리 종류
      • 변경 관리: 소스의 변경 사항을 관리
      • 버전 관리: 체크인, 체크아웃, 릴리즈, 퍼블리싱의 과정을 버전을 관리할 수 있다.
      • 형상 관리: 변경 관리 + 버전 관리 및 프로젝트 진행 상황, 빌드, 릴리즈까지 모두 관리
    • 형상 관리 절차
      • 형상 식별
        • 형상 관리를 시작으로 시스템을 구성하는 요소들 중 형상 관리의 대상들을 구분하고 관리 목록의 번호를 정의하여 부여
      • 형상 통제
        • 소프트웨어 형상 변경 요청을 검토하고 승인하여 현재의 베이스라인에 반영될 수 있도록 통제
        • 형상통제가 이루어지기 위해서는 CCB(형상 통제 위원회)의 승인을 통한 변경 통제가 이루어져야 한다.
      • 형상 감사
        • 형상 항목의 변경이 계획에 따라 제대로 이뤄졌는지를 검토하고 승인
      • 형상 기록
        • 베이스라인 산출물에 대한 변경과 처리과정에서의 변경을 모두 기록
    • 여기서 잠시 여러 팀 종류
      • CCB: 형상 통제 위원회
      • Chief Programmer Team: 책임 프로그램 팀
      • Cert: 보안 관제의 위기에 대응하기 위한 팀
  • 버전 관리 도구
    • 소프트웨어 버전 관리 도구 개념
      • 동일한 소스코드에 대한 여러 버전을 관리하는 것
    • 도구 유형
      • 공유 폴더 방식
        • 개발이 완료된 파일을 매일 약속된 위치의 공유 폴더에 복사
        • RCS, SCCS
      • 클라이언트, 서버 방식
        • 중아에 버전 관리 시스템이 항시 동작
        • CSV,SVN
      • 분산 저장소 방식
        • 로컬 저장소와 원격 저장소 구조
        • Git, Bitkeeper
  • 빌드 도구
    • 빌드의 개념
      • 소스코드 파일들을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 일련의 과정
    • 빌드 자동화 도구 특징
      • 빌드, 테스트, 배포를 자동으로 수행하는 도구
    • 빌드 자동화 프로세스
      • 개발자 → commit → 형상 관리 서버 (CI, 지속적인 통합)
      • 형상 관리 서버 → Polling → CI 서버
      • CI 서버 → Checkout → 빌드 스크립트(설명서)
      • CI 서버 → 테스트 & 실 서버 (배포)
    • 빌드 자동화 도구 종류
      • Make: 유닉스 계열 운영체제에서 주로 사용
      • Ant: Java 기반의 빌드 도구로 오랜 역사가 있다.
      • Maven: 프로젝트에 필요한 모든 의존성을 리스트 형태로 Maven에게 알려 관리할 수 있도록 돕는 방식
      • Jenkins
        • Java 기반의 오픈소스로, 소프트웨어 개발 시 지속적 통합 서비스를 제공
        • SVN, Git 등 대부분의 형상 관리 도구와의 연동 가능
      • Gradle
        • Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구로 안드로이드 앱 개발 환경에서 사용
  • 프레임워크
    • 프레임워크의 개념
      • 소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 손쉽게 구현할 수 있도록 여러 가지 기능들을 제공해주는 바네품 형태의 소프트웨어
    • 프레임워크의 특징
      • 모듈화
      • 제어의 역흐름
      • 확장성
      • 재사용성