반응형

     정보

    • 업무명     : 정보처리기사 실기 : 30강 응용 SW 기초 기술 활용 (기본 개발환경 구축)

    • 작성자     : 이상호

    • 작성일     : 2020-05-13

    • 설   명      :

    • 수정이력 :

     

     

     내용

    [운영체제 설치 및 운용]

    [1] 운영체제 선택 및 설치
    • 1. 윈도즈 계열 운영체제 선택 윈도즈 계열 운영체제는 개인용, 기업용, 워크스테이션용으로 출시된다. 

       

      • Windows Home: 개인 사용자에게 최적화된 운영체제이다. 

         

      • Windows Pro: 소규모 기업용으로 최적화된 운영체제이다. Pro는 Home에 비해 관리 및 배포, 도메인 가입, 엔터프라이즈 모드, 원격 데스크톱 지원, Hyper V와 같이 향상된 기 능을 제공한다. 

         

      • Windows Pro for Workstation: 트랜잭션이 몰리거나 복구 기능을 필요로 하는 소규모 기업용 운영체제이다. Pro에 비하여 CPU를 4개까지 동시 지원하여 동시 처리 성능이 뛰어나며 메모리도 6테라 바이트까지 지원한다. 또 비 휘발성 메모리 모듈을 지원하여 전력이 공급되지 않아도 데이터를 유지할 수 있어 안정성이 향상되었으며 파일 복원을 위해 향상된 ReFs를 지원한다.

     

    • 2. 리눅스/유닉스 계열 운영체제 선택 

       

      • 오픈소스 기반의 리눅스와 유닉스는 개발사 및 제공 업체가 다양하며 리눅스는 Redhat, 페도라, 센트OS와 같은 Redhat 계열과 데비안, 우분투, 칼리, 라즈비안과 같은 데비안 계열 그리고 기타 리눅스(젠투, 아치, 슬랙웨어) 등으로 구분된다. 

         

      • 각 리눅스 별 특징과 차이 점이 있으므로 의 특징과 link를 참조하여 최적화된 운영체제를 선택한다.

     

    [2] 운영체제 운용
    • 외부의 침입이나 바이러스로 인해 시스템이 통제 불능의 상태가 되어 불필요한 리소스를 낭비하거나 중요한 데이터의 유실을 방지하기 위해 다음 사항을 지속 점검하여 운용한다. 

       

    • 1. 서버 운용 기준 

       

      • 운용 아키텍처 및 기능 파악 

         

      • 네트워크 구성 현황 및 장비 매뉴얼 확보 

         

      • 장비 가동 및 중지 매뉴얼 확인 

         

      • 백업 주기, 보안 업데이트 주기 설정 및 점검 

         

      • 트러블 발생 시 대처 방안 마련 

         

    • 2. 개별 PC용 운영체제 운용 기준 

       

      • 정기적인 데이터 백업 

         

      • 주기적 보안 업데이트 

         

      • 시스템 백업 정례화 

         

      • 트러블 발생 시 문의처 정보 확인

     

    [수행]

    [1] 운영체제를 선택한다.
    • 1. 윈도 운영체제를 선택하고 설치한다. 

       

      • 윈도 운영체제를 사용하기 위한 목적을 점검한다. 

         

      • 개발환경을 구축하기 위해서는 최소 Pro 또는 Workstation급으로 설치해야 한다. 

         

      • 마이크로소프트 공식 홈페이지에 접속하여 최신 윈도즈 정보를 파악한 뒤 설치 여부를 판단한다. 

         

      • 라이선스 정책을 확인한다. 조직 내에서 라이선스를 관리할 경우 시스템 운영 담당자에 게 문의하여 적법한 라이선스 확보가 가능한지 알아본다. 

         

      • 윈도즈 설치 시 이전 데이터가 삭제될 수 있으므로 백업을 하여 데이터 유실을 방지한다.

     

     

    • 2. 리눅스/유닉스의 운영체제를 선택하고 설치한다. 

       

      • 리눅스와 유닉스는 매우 다양하므로 각 운영체제별 웹 사이트에 접속하여 지원 내용을 면밀히 확인한다. 다운로드 버튼을 누르면 [그림 4-2]와 같이 특정 버전의 리눅스를 다운 로드받을 수 있다. 18.04는 현재 버전으로 버전명을 알면 패치 정보와 제공되는 기능상의 차이를 알 수 있다. - 해당 버전에서 제공하는 기능을 파악해 본다. 다운로드를 한 뒤 운영체제를 설치해 본다.

     

    [2] 운영체제를 운용한다.
    • 1. 최신 업데이트로 유지한다. 

       

      • 윈도즈는 `윈도즈 업데이트'에서 최신 업데이트 정보를 확인할 수 있다. 침입이 가능한 외부 공격 패턴에 대하여 마이크로소프트에서 정기적인 업데이트를 수행함으로써 해당 기능을 활성화하여 항상 최신 상태를 유지한다.

     

    • 리눅스는 “Software & Updates” 창을 열어 업데이트를 수행하면 된다. 최신 업데이트의 파악이 가능하고 실행 업데이트를 수행한다. Shell을 사용할 경우 Ubuntu는 `# sudo apt update', `# sudo apt upgrade' 명령어를 사용한다. 리눅스마다 명령어는 일부 상이하나 동일 기능이 제공되고 있으므로 매뉴얼을 보고 업데이트 명령어를 파악한다.

       

    • 2. 시스템 복원 기능을 활성화한다. 

       

      • 운영체제를 활용 중 예기치 않은 오류로 시스템을 재설치해야 하는 경우가 있다. 이럴 경 우 설치된 프로그램 등을 모두 재설치해야 하는 불편함이 있다. 시스템 복원 기능을 활성 화하여 주요 복원 시점을 설정한다.

     

    [개발 도구 설치 및 운용]

    [1] 프로그래밍 언어
    • 다양한 프로그래밍 언어를 선택하는 것은 시스템 개발 및 운영에 매우 중요하다. 언어를 선택함에 있어 다음 사항 등을 고려한다. 

       

      • 언어의 타입: 정적 개발언어, 동적 개발언어 

         

      • 목표 시스템의 특징: 일반 시스템 또는 도메인 특화 시스템 

         

      • 언어 특징: 객체 지향, 명령형, 서술형, 순서형, 선언형 

         

      • 지원: 관리도구 지원형, 언어 독립형 에 나와 있는 언어 외에도 다양한 언어가 개발되어 배포되고 있다. 기본적 규칙 체계는 유사하다. 최근의 응용 시스템이나 서비스는 단일 언어만으로 구축이 어려운 경우 가 많다.

     

    [2] 개발 지원 도구
    • 1. 개발 지원 도구의 종류 

       

      • SW 개발 과정을 관리하는 오픈소스 기반의 도구를 활용하여 개발 작업의 생산성을 높일 수 있다.

     

    • 2. 개발환경에 맞는 지원 도구 선정

       

      • 개발 지원 도구는 개발자가 선택한 개발언어별로 차이를 두고 선택할 수 있다. 오픈소스 기반 툴마다 강점과 약점이 명확하며 도구 간 호환성에 차이가 있다. 따라서 필요한 공정 을 정의한 뒤 각 툴에 대한 특징을 파악하여 선택하도록 한다.

     

    [수행]

    [1] 프로그래밍 언어를 설치한다.
    • 1. 개발 목적에 맞는 프로그래밍 언어를 선정한다. 

       

      • 프로그래밍 언어는 Java, C#, Pearl, PHP 외 매우 다양하다. 대부분의 언어가 Graphic User Interface를 제공하고 커뮤니티가 활성화되어 있으므로 자신에게 맞는 것을 선택한다. 

         

    • 2. 프로그래밍 언어를 설치한다. 

       

      • 언어를 선택하여 다운로드 받는다. 예제로 웹 개발에 많이 사용되는 JAVA를 다운로드 받아 설치해 본다. 설치 시에는 운영체제의 버전을 정확히 선택해야 한다. 최근 다운로드를 지 원하는 곳에서 사용자의 운영체제를 파악하여 적합한 프로그래밍 언어 버전을 공급하여 주지만, 그렇지 않을 경우 자신의 윈도 버전이 32bit인지, 64bit인지를 확인하여 다운로드 받도록 한다. 설치 후 업데이트 현황을 파악하여 최신 상태를 유지하도록 한다.

     

    [2] 개발 지원 도구를 활용한다.
    • 1. 개발 프레임워크를 설치하고 운영한다. 

       

      • 스프링프레임워크 등 개발을 효율적으로 지원하는 프레임워크를 도입한다. 스프링프레임 워크와 같이 개발을 지원하는 도구를 사용할 때의 장점에 대해 정리한다. 

         

      • (1) 국가가 제공하는 표준 프레임워크 포털에 접속한다.

     

    • 전자 정부 표준 프레임워크는 다양한 장점을 가지고 있다. 

       

      • 공통컴포넌트의 재사용으로 중복 예산 절감 

         

      • 표준화된 개발 기반으로 사업자 종속성 해소 

         

      • 무상 제공으로 비용 경쟁력 향상 

         

      • 표준화된 연계 모듈 활용으로 상호 운영성 향상 

         

      • 개발 표준에 의한 모듈화로 유지 보수 용이 프레임워크를 설치하고 활용한다.

    • (2) 통합 다운로드를 하여 실행환경, 개발환경, 운영환경, 공통컴포넌트를 한꺼번에 설치해 본다. 향후 선택적으로 설치할 수 있으나 처음 운영환경을 구축할 때에는 통 합 다운로드로 전체 환경을 파악한다.

     

     

    • 2. 버전관리 시스템을 구축하고 활용한다. 

       

      • 형상관리도구는 CVS, SubversionOPEN CM 등이 있다. 전자 정부 프레임워크 내에서 모두 다운로드 받아 설치해 보고 각 툴의 기능을 사용해 본다.

     

    [응용 시스템 개발 인프라 구축]

    [1] 개발환경 인프라 구축 개요
    • IT 환경이 급변한 이후 모바일, IOT, 가상현실, 증강 현실, 인공 지능, 블록체인과 같은 다 양한 기술들로 인해 개발환경 구성은 매우 복잡해졌다. 따라서 개발하려는 전체 시스템에 필요로 하는 서비스를 효율적으로 선택하여 개발환경을 구축해야 한다. 

       

    • 1. 개발환경 인프라 구성 방식 

       

      • On-Premise 방식: 외부 인터넷망이 차단된 상태에서 인트라넷 망만을 활용하여 개발환 경을 구축하는 방식이다. 데이터와 정보의 외부 유출이 민감할 경우 해당 장비를 자체 구매하고 특정 공간에 개발환경을 구축한다. 

         

      • 클라우드 방식: 아마존, 구글, 마이크로소프트 등 클라우드 공급 서비스를 하는 회사들 의 서비스를 임대하여 개발환경을 구축하는 방식이다. 해당 장비를 초기에 구매하지 않 기 때문에 개발환경 투자비용이 적고 구축 시간이 빠른 장점이 있다. - Hybrid 방식: On-Premise와 클라우드 방식을 혼용하는 방식이다.

    • 2. 개발 인프라 환경 고려 사항 

      • 인프라 환경을 구축하기 전 다음과 같은 사항을 고려해야 한다. 

      • 개발하려는 목표 시스템을 완벽히 이해하고 있는가? 

      • 로컬 개발환경과 운영환경이 명확히 구분되어 개발 소스가 충돌 나지 않는가? 

      • 개발 서버는 계층화(Staging)되어 있어 검증되어 안정화된 소스와 개발 중인 불안전한 소스가 구분되도록 고려되었는가? 

      • 서비스의 안정적인 운영을 위해 지속적인 테스트와 신속한 배포가 가능하도록 설계되었는가? 

      • 운영비가 급격히 상승하여 비용적인 부담이 될 수 있는 가능성이 있는가? 

      • 서비스의 규모가 커질 경우 확장성이 충분히 고려되어 있는가? 

      • 오픈소스 활용 시 커뮤니티를 활용하기 위한 환경이 구축되어 있는가? 

      • 개발에 참여하기 위한 다수의 인원이 참조할 수 있는 표준화가 마련되었는가?

     

    [2] 클라우드 기반 개발 인프라 구축
    • 장비 임대, 스토리지 대여뿐만 아니라 개발자 도구 및 생산성 향상을 위한 각종 유틸리티 까지 지원한다. 사용자는 서비스의 범위와 사용량에 따른 비용만을 지불하고 서비스 제공 자는 이중화된 클라우드 센터를 운영하여 안정적 서비스를 공급한다.

       

      • 컴퓨팅 환경 

         

        • 프로그램을 설치하고 운용할 하드웨어 장비를 세팅 - 웹 기반 서비스 운용을 위한 웹 서버 - 데이터 관리와 백업 등을 위한 DBMS 서버 

           

      • 스토리지 

         

        • 대규모 데이터를 저장, 관리, 전송, 이중화하기 위한 저장 장치 세팅 - 클라우드 기반 스토리지 세팅 - 데이터 안정성 향상을 위한 아카이브 스토리지 세팅 - 페타 또는 엑사바이트 단위 전송이 필요한 경우 전송 스토리지 세팅 

           

      • 데이터베이스 

         

        • 실데이터를 저장하고 관리하기 위한 데이터베이스 세팅 - 고성능 관계형 데이터베이스 세팅 - 인메모리 데이터베이스 세팅 - 대규모 데이터 운영을 위한 웨어하우징 세팅 - 그래픽, 음성 등 멀티미디어 데이터 처리를 위한 환경 세팅

      • 네트워킹 전송 

        • 구성된 서비스, 프로그램, 콘텐츠를 효율적으로 전달하기 위한 환경 세팅 

        • 콘텐츠 전송용 CDN(Contents delivery network) 구축 

        • API 제공용 환경 구축 

        • 대규모 로드 밸런싱 환경 구축 

      • 개발자 도구 

        • 프로그램을 실제 개발하기 위한 제반 환경 구축 

        • 애플리케이션 개발 및 배포환경 구축 

        • 소스코드를 손실 없이 관리하기 위한 repository 구축 

        • 코드 개발, 테스트를 위한 환경 구축 

        • 코드 자동 배포, 형상관리를 위한 환경 구축

      • 보안 환경 구축 

        • 외부의 침입으로부터 시스템과 데이터를 보호하기 위한 환경 구축 

        • 사용자 엑세스 및 암호화 관리 

        • 앱 자격 증명 환경 구축 

        • 각종 인증서 프로비저닝, 관리 및 배포 

        • 악성 트래픽 필터링 서비스 관리 

        • 해킹 공격(DDos 등)으로부터의 방어 환경 구축 

      • 응용 기술 세팅 

        • 증강 현실, 가상현실 개발을 위한 환경 세팅 

        • 머신러닝, 딥러닝 등 AI 개발환경을 위한 환경 세팅 

        • 사물 인터넷, 게임 등 개발을 위한 환경 세팅 

      • 생산성 향상 

        • 시스템 볼륨 자동 확장 환경 구축 

        • 실시간 스트리밍 서비스 환경 구축 

        • 비즈니스, 운영 상태 분석 서비스 구축

     

    [수행]

    [1] 개발환경을 시스템의 구현 목적에 맞게 결정한다.
    • 단독 시스템에서 운영되거나 고객이 외부로의 데이터 유출을 많이 우려한다면 On-Premise 개발환경을 구축한다. 

       

    • 클라우드 환경의 개발환경은 설정이 간단하여 몇 가지 세팅만으로 서버 구매, 데이터베이스 설정, 개발언어 설정, 보안 등을 처리할 수 있다.

     

    [2] 클라우드 기반 개발환경을 구축한다.
    • 1. 클라우드 환경을 선택하고 개발 목적에 맞는 환경을 구축한다. 

       

      • 공급자가 동일하더라도 사용 목적에 부합하는 다양한 클라우드 환경을 구축할 수 있다. 클라우드 사업자는 무료로 체험 서비스를 제공한다.

         

      • (1) 리눅스 서버 환경을 구축해 본다. 

         

        • 계정을 생성한다. 

           

        • 웹 서비스에 접속하여 인스턴스를 생성한다.

    • 2. 설정된 서비스에 과 같은 기능과 명령어를 사용하여 클라우드 개발환경을 구축한다.

     

    [연습문제]

    • 윈도즈 계열 운영체제가 아닌 것은?

       

      • Windows Home

         

      • Windows Pro

         

      • Windows Pro for Workstation

         

      • Windows complete

     

    • 개발 인프라 환경 고려 사항이 아닌 것은?

       

      • 개발하려는 목표 시스템을 완벽히 이해하고 있는가? 

         

      • 로컬 개발환경과 운영환경이 명확히 구분되어 개발 소스가 충돌 나지 않는가? 

         

      • 개발 서버는 계층화(Staging)되어 있어 검증되어 안정화된 소스와 개발 중인 불안전한 소스가 구분되도록 고려되었는가? 

         

      • 개발에 참여하기 위한 소수의 인원이 참조할 수 있는 표준화가 마련되었는가?

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기