소프트웨어 개발 프로세스
- 기존의 소프트웨어 개발은 ‘애플리케이션 실행 환경 구축’과 ‘애플리케이션 개발’의 구분이 명확했다.
- 실행환경 구축은 네트워크나 하드웨어에 능통한 인프라 엔지니어가 담당하고, 애플리케이션 개발은 업무 지식 및 프로그래밍, 테스트 방법과 같은 기술을 잘 아는 애플리케이션 엔지니어가 담당했다.
- 그러나 클라우드의 등장으로 온프레미스 환경에서 가동하던 서버들을 클라우드 상 가상 인스턴스로 옮기면서 클라우드 상의 DB나 네트워크 등을 이용함으로써 실행 환경 구축의 범위는 극도로 축소되었다.
- 이로 인해, 인프라 엔지니어와 애플리케이션 엔지니어의 경계는 점차 희미해졌다.
시스템 기반 구성 요소
하드웨어
- 시스템 기반을 구성하는 물리적인 요소
- 서버 장비 본체나 데이터를 저장하기 위한 스토리지, 전원 장치 등이 포함
네트워크
- 시스템 이용자가 원격지에서 엑세스할 수 있도록 서버들을 연결하기 위한 요구사항
- 라우터, 스위치, 방화벽 등과 같은 네트워크 장비나 그것들을 연결하기 위한 케이블 배선 등
OS(운영체제)
- 하드웨어나 네트워크 장비를 제어하기 위한 기본 소프트웨어로, 하드웨어의 리소스나 프로세스를 관리
- 클라이언트 OS : Windows/macOS
- 서버 OS : Windows Server, Linux, Unix 등
미들웨어
- 서버 OS 상에서 서버가 특정 역할을 다하기 위한 기능을 갖고 있는 소프트웨어를 말한다.
- 미들웨어는 상용인 것과 오픈소스인 것 등 다양하게 존재
클라우드와 온프레미스
1) 온프레미스
- 자사에서 데이터센터를 보유하고 시스템 구축부터 운용까지 모두 수행
- 시스템 기반의 구성 요소인 서버나 네트워크 장비 모두 자사에서 직접 조달하여 시스템 요구사항에 맞춰 인프라를 구축하고 자사에서 운용
- 하드웨어 뿐만 아니라 OS나 미들웨어 모두 자사에서 구입, 라이선스 관리나 버전업도 직접 진행
- 초기 시스템 투자 비용 부담이 큼, 시스템 가동 후 운용에 드는 비용이 일정금액 이상 지출
2) 퍼블릭 클라우드
- 인터넷을 경유하여 불특정 다수에게 제공되는 클라우드 서비스
- 자사에서 데이터센터를 보유하지 않아 인프라와 관련된 초기 투자 불필요
- 제공할 서비스에 따라 IaaS, PaaS, SaaS 등이 있다.
- 증설이 편리하고 단기간에 인프라 구축이 가능
3) 프라이빗 클라우드
- 특정 기업, 그룹에게만 제공되는 클라우드 서비스
- 이용자를 한정하여 보안성이 높고 마이그레이션이 편리
- 증설이 편리하고 단기간에 인프라 구축이 가능, 초기 투자 불필요
클라우드가 적합한 케이스
- 트래픽 변동이 많은 경우
- 재해 대책으로 해외에 백업을 구축하고 싶은 시스템
- 서비스를 빠르게 구축하고 싶은 시스템
온프레미스가 적합한 케이스
- 높은 가용성이 요구되는 시스템
- 기밀성이 높은 데이터를 다루는 시스템
- 특수한 요구사항이 있는 시스템
댓글남기기