어플리케이션이란 무엇일까?
사용자가 무언가를 할 수 있도록 도와주는 컴퓨터 프로그램 또는 소프트웨어이다.(이메일/ 소셜 미디어 ...)
기존 어플리케이션은 온프레미스로 개발되어, 속도 저하 / 관리의 어려움 등이 있었다.
클라우드 기술을 통해 기업은 새로운 방식으로 어플리케이션을 개발하고 관리할 수 있으므로, 보다 민첩하고 사용자 요구에 신속하게 대응이 가능하다.
여기선 어플리케이션을 현대화 하려는 기업을 위한 5가지 일반적인 변경 패턴을 배울 예정이다.
추가로 기업이 직면한 응용 프로그램 개발에 직면한 문제를 살펴볼 예정이다.
그런 다음 쿠버네티스와 앱 엔진에 대해서 알아보려고 한다.
어플리케이션을 클라우드를 이동하는 방법은 여러개가 있다.
먼저 어플리케이션을 클라우드로 옮긴 다음 변동사항을 적용할 수 있고,
일반적으로 조직 내 작업 방식에 최소한의 변화를 가져오지만, 어플리케이션이 클라우드에서 실행되면 온프레미스에서 실행될 때 보다 더 쉽게 업데이트 할 준비가 된다.
(구글 클라우드에서 제공하는 보안 방식을 적용하여 빠르게 변동사항 적용 가능 등등)일부만 옮겨서 개발하고 예산이 생기면 그 때 마다 점점 옮겨나갈 수 있음
이동하기 전에 어플리케이션을 변경할 수 있으며,
보다 공격적인 접근 방식이며 마이그레이션 전에 어플리케이션을 재 설계하여 클라우드에 더 적합하게 만들 수 있다.
greenfield(새로운 환경)에서 개발할 수 있으며,
완전 새로운 것들을 개발하는 것으로 집으로 친다면, 사무실이 없었는데 사무실을 만들고 가구를 사는 느낌임
아직 어플리케이션을 만드는 단계는 아니며, 만약 어플을 만든다고 한다면 앞서 2개의 어떤 방식을 택할지 생각할 수 있음
brownfield(기존 환경)에서 개발 할 수 있으며,
온프레미스에 남아있는 레거시 어플리케이션을 대체할 새로운 어플리케이션을 클라우드 환경에서 개발하는 것
레거시 어플리케이션은 새로운 어플리케이션이 배포가 된 이후에 대체 됌
변경 없이 어플리케이션을 옮길 수 있다.
온프레미스 데이터 센터를 클라우드 스토리지로 옮길 때 많이 사용함.
혹은 재해 복구 용으로 옮기는 경우가 많음
기존에 비즈니스 전문가가 새로운 어플리케이션을 원할 때 기능을 식별하고, 용량을 예측하고, 다른 시스템과 통합을 고려하고 코드 라인이 완성되기 전에 리소스를 할당하기 위한 많은 작업을 수행해야 한다.
요구 사항이 합의되면, 새 어플리케이션을 설계, 구축, 테스트, 통합 및 배포 해야함
그러나 새로운 요구 사항은 기존 프로젝트와 시간 / 자원으로 인해 충돌이 일어남.
이러한 이유로 시간이 많이 들어감.
개발자는 인프라를 유지하는데 시간을 소비하지 않고 새로운 솔루션을 구축하고 싶어함.
다만 이러한 인프라에 신경을 더 써야 한다면 개발자는 지칠 수 있음
클라우드로 활용하면 레거시 시스템에서의 프로세스 적인 번거로움을 피할 수 있음
팀은 환경에 대한 걱정에서 벗어나 고객이 원하는 기능을 개발하는데 집중 할 수 있음
마이크로서비스 아키텍처는 이러한 문제를 줄일 수 있는데 각 서비스를 모듈 식으로 개발하여 코드를 변경해야 하는 위치를 쉽게 결정할 수 있다.
더욱이 서비스를 독립적으로 업데이트하고 배포할 수 있다.
CI/CD라고 하는 자동화된 지속적 통합 및 지속적 배포 접근 방식을 채택하면 어플리케이션 릴리스 속도와 안정성을 높이는데 도움이 됌
CI/CD 파이프라인을 사용하면 여러 변경 사항이 포함된 대규모 릴리스를 만드는 대신 점진적으로 변경 사항을 테스트하고 롤아웃 할 수 있음
이 접근 방식을 사용하면 회귀 위험을 피하고 문제를 신속하게 디버그하고 필요한 경우 안정적인 빌드로 롤백할 수 있다.
사용자에 대한 서비스를 중단하지 않고 어플리케이션을 업데이트 할 수 있다.
컨테이너화를 통해 개발자는 어플리케이션 디자인을 개별 구획으로 나눌 수 있다.
(마이크로 서비스)이점은 전체 어플리케이션에 영향을 주지 않고 코드의 일부를 업데이트 할 수 있다는 것이다.
또한 하나의 오류가 전체 어플리케이션에 영향을 미치지 않기에 탄력성을 보장한다.
쿠버네티스는 컴퓨터 어플리케이션 배포, 확장 및 관리를 자동화하기 위한 오프소스 컨테이너 시스템이다.
앱 엔진은 확장 가능한 웹 어플리케이션 및 모바일 백엔드를 구축하기 위한 플랫폼이다.
(Monolithic식)예를 들어 어플리케이션을 빌드할 때 App Enginedms 코드를 실행하는 데 필요한 하드웨어 및 네트워킹 인프라를 관리하므로 개발자는 더 이상 귀중한 시간을 할애할 필요가 없다.
배포하는 동안 App Engine은 수신하는 트래픽 양에 다라 어플리케이션을 자동으로 확장하므로 사용한 리소스에 대해서만 비용을 지불하면 된다.