CMP2808M Cloud Computing
Description of Assessment Task and Purpose:
Overview
Your task for this assessment is to programmatically specify and deploy cloud service resources using a combination of DevOps focused console and template tooling. Using the tools, you will develop a cloud ‘infrastructure-as-code’ solution for an industry scenario. Through a declarative approach using a combination of YAML configuration and associated Jinja template files, you will be able to create and fully deploy a non-trivial cloud service configuration that meets the
needs of the industry scenario.
Industry Scenario
You are acting in the role of a Cloud Architect and are responsible for the development and repeatable deployment of scalable cloud services for a large organisation. This is to support the migration and rapid growth of its mobile shopping business. Your role is to manage the development and deployment of the required cloud service resources to support the migration of the organisation’s servers, networks, data storage, and suitable remote admin access to the
cloud data storage. This enables the organisation to quickly react to the growing requirements of the organisation’s web traffic and data storage requirements. The organisation has a preference for a ‘lift and shift’ approach, where their on-premise virtual machines are migrated to the cloud IaaS model. You should therefore focus your efforts on IaaS services where appropriate to do so.
Development
This development approach allows you to programmatically specify the cloud resources needed for the task in a declarative format using a single YAML based configuration file and supporting
Jinja templates (do not use Python templates). The YAML and template files will be deployed via the Google Cloud Deployment Manager(DM) (https://cloud.google.com/deploymentmanager/docs/fundamentals). The supporting Jinja file templates should also be used to parameterize your cloud service configuration and facilitate reusability of your code for repeatable cloud service deployments. In summary, your YAML and Jinja template files will be deployed using DM and the Google Cloud SDK which is freely available here: https://cloud.google.com/sdk/docs/install#windows for Windows, macOS and various Linux
distributions.
You can only use the DM service for the cloud resource types listed at the following link, with emphasise on mostly using IaaS service types: https://cloud.google.com/deploymentmanager/docs/configuration/supported-resource-types , you cannot use any other cloud service types for your solution other than those listed at the link. There are further exceptions to this, for the purposes of this assessment you must not use the following DM resource types:
appengine.x.x
bigquery.x.x
bigtableadmin.x.x
spanner.x.x
iam.x.x
There may be further exceptions for resource types that have not been identified but in general the vast majority are available to use. If you come across a resource type that states your project
space does not have the correct permissions to deploy it then please inform the module coordinator for further advice.
You will not be supplied with a definitive list of cloud resources to create and deploy to meet the organisation’s requirements, and instead should use the knowledge and skills you have gained in the module along with independent study to provide the most appropriate solution that you can – note there is no single correct solution as there are many cloud resources type solutions that could fit. Essentially, each student can demonstrate their intellectual curiosity and technical creativity when designing and developing their own solution.
However, it should be assumed that the deployment should include core IaaS resources such as virtual machine instances in the form of suitable server instances, virtual network and subnets.
Other core services should include storage services, as well as scaling services where appropriate to do so.
The YAML configuration file and template files you create should adopt an optimal approach to limit code repetition, with the emphasis on reusable templates as building blocks for importing in your configuration file. You are also expected to provide clearly written code that is suitably commented throughout both the configuration file and templates. Properties and parameters for all cloud resource types should be used correctly to define their deployment to a good standard.
Your entire solution must be able to run from a single YAML configuration file named with your studentID, for example 12345678.yaml, of course this single configuration file can automatically import and run as many well-considered Jinja template files as your solution contains.
Resource Limitations
The maximum number of compute and SQL instances you should use as part of your solution is 8 total. Please note this is not the ‘perfect’ number you should aim for; solutions can be created with less. Its purpose is to provide a hard resource cap and notification to you that the business scenario given in this brief does not require more compute instances beyond this total.