관리 메뉴

나구리의 개발공부기록

CHAPTER 03 - 기본 개발환경 구축 본문

2024년도 수제비 실기책(6판) 내용 


1. 개발 인프라 구축

1) 개발 환경 인프라 구축

  • 소프트웨어 개발 프로세스를 지원하고 향상시키기 위해 필요한 기반이나 환경을 구축하는 과정

2) 개발 환경 인프라 구축 방식

구성방식 설명
온프레미스
(On-Premise 방식)
- 외부 인터넷망이 차단된 상태에서 인트라넷망만을 활용하여 개발환경을 추축하는 방식
- 데이터와 정보의 외부 유출이 민감할 경우 해당 장비를 자체 구매하고 특정 공간에 개발환경을 구축
클라우드(Cloud) 방식 - 아마존, 구글, 마이크로소프트 등 클라우드 공급 서비스를 하는 회사들의 서비스를 임대하여 개발환경을 구축하는 방식
- 해당 장비를 초기를 구매하지 않기 때문에 개발환경 투자비용이 적고 구축 시간이 빠름
하이브리드(Hybrid) 방식 - 온프레미스와 클라우드 방식을 혼용하는 방식

3) 개발환경 인프라 구축 장비

(1) 스토리지 시스템

유형 설명
DAS
(Direct Attached 
Storage)
- 하드 디스크와 같은 데이터 저장 장치를 호스트 버스 어댑터에 직접 연결하는 스토리지
- 저장 장치와 호스트 기기 사이에는 네트워크 디바이스가 있지 말아야 하고 직접 연결하는 방식으로 구성된 기술
NAS
(Network Attached
Storage)
- 서버와 저장 장치를 네트워크로 연결하여 구성하는 스토리지
- 구성 설정이 간편하며 별도의 운영 체제를 가진 서버 한 곳에서 파일을 관리하기 때문에 서버 간에 스토리지 및 파일 공유가 용이
- 저장 장치와 서버를 직접 연결하는 것이 아니라 네트워크를 통해 스토리지에 접속하고 파일 단위로 관리
SAN
(Storage Area
Network)
- 서버와 스토리지를 저장 장치 전용 네트워크로 상호 구성하여 고가용성, 고성능, 융통성, 확장성을 보장하고 데이터를 블록(Block) 단위로 관리하는 스토리지
- DAS의 빠른 처리와 NAS의 스토리지 공유 방식의 장점을 합친 방식으로, 광케이블 및 광 채널 스위치를 통해 근거리 네트워크 환경을 구성하여 빠른 속도로 데이터를 처리할 수 있으며, 스토리지가 공유가 가능한 기술

 

(2) RAID(Redundant Array of Independent Disks; 복수 배열 독립 디스크)

 

  • 하나의 대형 저장 장치 대신 다수의 저용량의 저장 장치를 배열로 구성하는 기술
  • 여러 개의 하드디스크에 일부 중복된 데이터를 나눠서 저장하기 때문에 디스크 어레이(Dist Array)라고도 함
레벨 개념도 설명
RAID 0
- 패리티(오류 검출 기능)가 없는 스트라이핑된 세트로 구성되는 방식
- 적어도 2개의 디스크 필요
- 개선된 성능에 추가적인 기억장치를 제공하는 장점이 있지만, 장애 시 데이터의 안전을 보장할 수 없는 단점이 있음
RAID 1
- 패리티(오류 검출 기능)가 없는 미러링된 세트로 구성되는 방식
- 적어도 2개의 디스크 필요
- 디스크 2개에 동일한 데이터가 저장되고, 제공해야 할 논리 디스크 크기의 두 배 공간을 필요로 하기 때문에 비용 측면에서 단점이 있음
RAID2
- 오류정정부호(ECC)를 기록하는 전용의 하드 디스크를 이용해서 안정성을 확보하는 방식
- 비트레벨의 스트라이핑과 해밍코드 패리티를 사용하여 하나의 멤버 디스크가 고장나도 ECC를 이용하여 정상적으로 작동할 수 있지만, 추가적인 연산이 필요하여 입출력 속도가 매우 늦음
RAID3
- 데이터는 모든 디스크에 바이트 단위의 스트라이핑된 세트로 구성되고, 패리티 정보는 별도의 전용 디스크에 저장되는 방식
- 적어도 3개의 디스크 필요
- 한 개의 드라이브가 고장 나는 것을 허용하며, 순차적 쓰기 성능과 순차적 읽기 성능은 우수하지만 문제 해결이 어려워서 잘 사용되지 않음
RAID4
- 데이터는 모든 디스크에 블록 단위의 스트라이핑된 세트로 구성되고 페리티 정보는 별도의 전용 디스크에 저장되는 방식
- 적어도 3개의 디스크 필요
- 읽기 성능은 좋지만 쓰기 성능은 나쁜 단점이 있음
RAID5
- 패리티가 배분되는(Distributed) 스트라이핑된 세트로 구성된 방식
- 적어도 3개의 디스크 필요
- 모든 디스크에 나뉘어 저장되지만, 항상 균등하진 않고 패리티 정보도 모든 디스크에 나뉘어 저장
RAID6
- 패리티가 배분되는(Distributed) 스트라이핑된 세트로 구성된 방식
- 적어도 4개의 디스크 필요
- 각 디스크에 패리티 정보가 두 번 독립적으로 분산되어 저장

4) 클라우드 기반 개발 인프라 구축

(1) 가상화(Virtualization) 개념

 

  • 물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개로 보이게 하는기술
  • 대부분의 서버는 용량의 20%정도만을 사용하는데, 가상화를 통해 서버의 가동률을 60~70%이상으로 올릴 수 있음

(2) 가상화의 종류

종류 설명
플랫폼 가상화 하드웨어 플랫폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 마치 독립된 환경을 만들어낸 것 처럼 보여주는 기법
리소스 가상화 - 게스트 소프트웨어 위에서 사용자는 독립된 하드웨어에서 소프트웨어가 실행되는 것처럼 활용하는 기법
- 메모리, 저장 장치, 네트워크 등을 결합하거나 나누기 때문에 사용자는 가상화된 물리적 장치들이 어떤 위치에 있는지 알기 어려움

 

(3) 가상화 기술요소

기술요소 설명
컴퓨팅 가상화
(Computing
Virtualization)
- 물리적으로 컴퓨터 리소스를 가상화하여 논리적 단위로 리소스를 활용할 수 있도록 하는 기술
- 서버 가상화를 통해 하나의 시스템에서 1개 이상의 운영체제를 동시에 가동시킬 수 있으므로, 서버 이용률이 크게 향상
ex) 하이퍼바이저(Hypervisor)
스토리지 가상화
(Storage
Virtualization)
- 스토리지와 서버 사이에 소프트웨어/하드웨어 계층을 추가하여 스토리지를 논리적으로 제어 및 활용할 수 있도록 하는 기술
- 이기종 스토리지 시스템의 통합을 가능하게 하는 기술
ex) 분산 파일 시스템
I/O 가상화
(I/O Virtualization)
- 서버와 I/O 디바이스 사이에 위치하는 미들웨어 계층으로, 서버의 I/O 자원을 물리적으로 분리하고 케이블과 스위치 구성을 단순화하여 효율적인 연결을 지원하는 기술
ex) 가상 네트워크 인터페이스 카드
컨테이너
(Container)
- 컨테이너화된 애플리케이션들이 단일 운영체제상에서 실행되도록 해주는 기술
- 하이퍼바이저 없이 운영체제가 격리된 프로세스로 동작하기 때문에 오버헤드가 낮음
ex) 도커(Docker)
분산처리 기술
(Distributed
Computing)
- 여러대의 컴퓨터 계산 및 저장능력을 이용하여 커다란 계산 문제나 대용량의 데이터를 처리하고 저장하는 기술
네트워크 가상화
(Network
Virtualization)
- 물리적으로 떨어져 있는 다양한 장비들을 연결하기 위한 수단으로 중계 장치(라우터, 스위치 등)의 가상화를 통한 가상 네트워크를 지원하는 기술
ex) SDN, NFV

5) 클라우드 컴퓨팅(Cloud Computing)

  • 인터넷을 통해 가상화된 컴퓨터 시스템 리소스(IT 리소스)를 제공하고, 정보를 자신의 컴퓨터가 아닌 클라우드(인터넷)에 연결된 다른 컴퓨터로 처리하는 기술
  • 구성 가능한 컴퓨팅 자원에 대해 어디서나 접근할 수 있음

(1) 클라우드 컴퓨팅 분류(사공하)

분류 설명
사설 클라우드
(Private Cloud)
- 기업 또는 조직 내부에서 보유하고 있는 컴퓨팅 자원(IDC, 서버 등)을 사용하여 내부에 구축되어 운영되는 클라우드
- 자체 컴퓨팅 자원으로 모든 하드웨어, 소프트웨어, 데이터를 수용
- 직접적인 통제가 가능하며 보안성을 높일 수 있음
공용 클라우드
(Public Cloud)
- 클라우드 서비스 제공 업체에서 다중 사용자를 위한 컴퓨팅 자원 서비스를 제공하는 클라우드
- 일정한 비용을 지불하고 하드웨어, 소프트웨어 등을 사용
- 확장성, 유연성 등이 뛰어남
하이브리드 클라우드
(Hybrid Cloud)
- 기업 또는 조직 내부 자원을 이용한 사설 클라우드와 공용 클라우드를 모두 사용하는 클라우드
- 사설 클라우드의 약점인 구축 비용 문제와 공용 클라우드의 약점인 보안성 확보 문제를 해결
- 사용 업무의 중요도, 보안성 확보의 중요도 등에 따라 이용 형태 변경이 가능

 

(2) 클라우드 서비스 유형(인플소)

클라우드 서비스 유형, 하얀색 - 기업이 관리하는 영역, 주황색 - 클라우드 서비스 제공 영역

분류 설명
인프라형 서비스
(IaaS; Infrastructure
as a Service)
- 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스
- 컴퓨팅 자원에 운영체제나 애플리케이션 등의 소프트웨어 탑재 및 실행
- 하위의 클라우드 인프라를 제어하거나 관리하지 않지만 스토리지, 애플리케이션에 대해서는 제어권을 가짐
플랫폼형 서비스
(PaaS; Platform
as a Service)
- 인프라를 생성, 관리 하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스
- SaaS의 개념을 개발 플랫폼에도 확장한 방식으로 개발을 위한 플랫폼을 구축할 필요 없이, 필요한 개발 요소를 웹에서 빌려 쓸 수 있게 하는 모델
- OS, 애플리케이션과 애플리케이션 호스팅 환경 구성의 제어권을 가짐
소프트웨어형 서비스
(Software
as a Service)
- 소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스
- 주문형 소프트웨어라고도 함

2. 신기술 용어

1) 인프라 관련 신기술 용어

용어 설명
SDDC
(Software Defined
Data Center)
모든 하드웨어가 가상화되어 가상 자원의 풀(Pool)을 구성하고, 데이터센터 전체를 운영하는 소프트웨어가 필요한 기능 및 규모에 따라 동적으로 자원을 할당, 관리하는 역할을 수행하는 데이터 센터
SDS
(Software Defined
Storage)
- 서버와 전통적인 스토리지 장치에 장착된 물리적 디스크 드라이브를 가상화 기술을 적용하여 필요한 공간만큼 나눠서 사용할 수 있도록 논리적인 스토리지로 통합한 가상화 기술
- 컴퓨팅 소프트웨어로 규정하는 데이터 스토리지 체계이며, 일정 조직 내 여러 스토리지를 하나의 스토리지처럼 관리하고 운용하는 컴퓨터 이용 환경
HACMP
(High Availability Cluster
Multiprocessing)
- 각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮어 다수의 시스템을 동시에 연결하여 조직, 기업의 기간 업무 서버 등을 안정성을 높이기 위해 사용되는 고가용성 솔루션
- 여러가지 방식으로 구현되면 2개의 서버를 연결하는 것으로 2개의 시스템이 각각 업무를 수행하도록 구현하는 방식이 널리 사용됨
도커 (Docker) - 컨테이너 응용 프로그램의 배포를 자동화하는 오픈소스 엔진
- 소프트웨어 컨테이너 안에 응용 프로그램들을 배치시키는 일을 자동화해주는 오픈 소스 프로젝트이자 소프트웨어
하이퍼바이저
(Hypervisor)
하나의 호스트 컴퓨터상에서 동시에 다수의 운영체제를 구동시킬 수 있는  HW와 OS 사이의 SW 가상화 플랫폼
쿠버네티스
(Kubernetes)
리눅스 재단에 의해 관리되는 컨테이너화된 애플리케이션의 자동 배포, 스케일링 등을 제공하는 오픈 소스 기반의 관리 시스템
서버리스 컴퓨팅
(Serverless computing)
- MSA, BaaS, FaaS 등의 기술을 활용하여 서버가 없는 것과 같이 직접 해당 이벤트에 접근하여 처리하는 컴퓨팅 기술
- 각 서버를 접속하는 방식보다 연결 및 속도를 개선

2) 소프트웨어 관련 신기술 용어

용어 설명
인공지능 (AI;
Artificial Intelligence)
- 인간의 지적 능력을 인공적으로 구현하여 컴퓨터가 인간의 지능적인 행동과 사고를 모방할 수 있도록 하는 소프트웨어
- 인간의 지적 능력을 컴퓨터를 통해 구현하는 기술
기계학습 (ML;
Machine Learning)
- 인공지능의 분야 중 하나로, 인간의 학습 능력과 같은 기능을 컴퓨터에서 실현하고자 하는 기술
- 컴퓨터가 데이터를 통해 스스로 학습하여 예측이나 판단을 제공하는 기술
가상 현실
(VR; Virtual Reality)
컴퓨터 등을 사용한 인공적인 기술로 만들어낸 실제와 유사하지만 실제가 아닌 어떤 특정한 환경이나 상황 또는 구현하는 기술
증강 현실
(AR; Augmented Reality)
가상 현실(VR)의 한 분야로 실제로 존재하는 환경에 가상의 사물이나 정보를 합성하여 마치 원래의 환경에 존재하는 사물처럼 보이도록 하는 컴퓨터 그래픽 기술
혼합 현실
(MR; Mixed Reality)
실세게의 물리적 환경과 가상환경을 혼합한 경험을 제공하는 하이브리드 현실
블록체인
(Blockchain)
- 분산데이터베이스의 한 형태로 분산 노드의 운영자에 의한 임의조작이 불가능 하도록 고안되어 지속적으로 성장하는 데이터 기록 리스트인 블록을 연결한 모음
- P2P(Peer to Peer) 네트워크를 통해서 관리되는 분산 데이터베이스 기술
BaaS (Blockchain
as a Service)
- 블록체인의 기본 인프라를 추상화하여 블록체인 응용 프로그램을 만들 수 있는 클라우드 컴퓨팅 플랫폼
- 블록체인 개발환경을 클라우드로 서비스
CPS (Cyper-Physical
System)
가상 물리 시스템으로 인간의 개입 없이 대규모 센서/액추에이터를 갖는 물리적인 요소들과 통신 기술, 응용 / 시스템 소프트웨어 기술을 활용하여 실시간으로 물리적 요소들을 제어하는 컴퓨팅 요소가 결합된 복합시스템
디지털 트윈 (Digital Twin) 물리적인 사물과 컴퓨터에 동일하게 표현되는 가상 모델로 실제 물리적인 자산 대신 소프트웨어로 가상화 함으로써 실제 자산의 특성에 대한 정확한 정보를 얻을 수 있고, 자산 최적화, 돌발사고 최소화, 생산성 증가 등 설계부터 제조, 서비스에 이르는 모든 과정의 효율성을 향상시킬 수 있는 모델
서비스 지향 아키텍처
(SOA; Service Oriented
Architecture)
- 서비스라고 정의되는 분할된 애플리케이션 조각들을 느슨하게 결합하고(Loosely-Coupled) 연결해 하나의 완성된 애플리케이션을 구현하기 위한 아키텍처
- 비즈니스 층, 표현 층, 프로세스 층으로 구성
디지털 변혁
(Digital Transformation)
디지털 기술 기반으로 기업의 전략, 조직, 프로세스, 비즈니스 모델, 문화, 커뮤니케이션 등을 변화시키는 경영전략
마이크로서비스 아키텍처
(MSA; Microservices
Architecture)
하나의 큰 시스템을 여러 개의 작은 서비스로 나누어 변경과 조합이 가능하도록 만든 아키텍처
매시업(Meshup) - 웹으로 제공하고 있는 정보와 서비스를 융합하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술
- 서로 다른 웹 사이트의 콘텐츠를 조합하여 새로운 차원의 콘텐츠나 서비스를 창출하는 웹 사이트 또는 애플리케이션을 의미
그레이웨어
(Grayware)
- 바이러스나 명백한 악성 코드를 포함하지 않는 합법적 프로그램이면서도 사용자를 귀찮게 하거나 위험한 상황에 빠뜨릴 수 있는 프로그램
- 평범한 소프트웨어인지, 바이러스 인지 구분하기 어려운 중간 영역에 존재하는 프로그램
- 스파이웨어, 애드웨어, 장난 프로그램, 원격 액세스 도구 등 사용자가 원하지 않는 프로그램을 총징하는 이름
텐서플로(TensorFlow) 구글의 구글 브레인 팀이 제작하여 공개한 기계 학습(Machine Learning)을 위한 오픈 소스 소프트웨어 라이브러리
파스타(PaaS-TA) 국내 IT 서비스 경쟁력 강화를 목표로 개발되었으며 인프라 제어 및 관리 환경, 실행 환경, 개발 환경, 서비스 환경, 운영 환경으로 구성된 NIA주도로 개발된 개방형 클라우드 컴퓨팅 플랫폼
메타버스(Metaverse) - 가상/초월과 세계/우주의 합성어로서 3차원 가상 세계를 뜻하는 용어
- 정치/경제/사회/문화의 전반적 측면에서 현실과 비현실 모두 공존할 수 있는 생활형/게임형 가상 세계