ITC561 Assessment item 3 MicroService Design and Re-Factoring
ITC561 Micro Service Design and Re-Factoring
VideoDev Ltd is a video and production development company which works for clients across Australia and New Zealand. The company is considering moving some of its computer infrastructure into the Cloud. The VideoDev Board is contemplating this move as a way to increase the company’s flexibility and responsiveness, as well as to achieve some savings on the cost of maintaining their ICT infrastructure.
VideoDev has engaged you as a consultant to advise them on the use of Cloud Computing in their daily operations. They have some 100 video production, engineering and support staff that work on different projects for clients in Australia and New Zealand. They have been advised that a move to using a Cloud based infrastructure would be an advantage to them.
VideoDev have a number of application servers in their Sydney and Melbourne datacentres that provide video processing capabilities for their staff. These servers are quite heavily customised and run reasonably heavy workloads while doing video processing. There is often a considerable queue of jobs waiting to be processed, which causes backlogs in getting jobs completed on time. The Board hopes that a move to a cloud based operation may help to relieve these backlogs.
Another of VideoDev’s initial projects is to provide all their staff with a Standard Desktop Operating Environment (SDOE) on their desktop. This would include providing a standard desktop to any device that their staff may be using, as well as access to office automation, such as email, word processing, spreadsheet capabilities, as well as online storage for their files. The Board want the SDOE to be available on any device that their staff use, whether they are in the office, at home, or deployed at a customer’s office in the field.
VideoDev is considering the use of either Amazon WorkSpaces (https://aws.amazon.com/workspaces/) or Windows Virtual Desktop (https://azure.microsoft.com/en-au/services/virtual-desktop/) as a replacement for their existing desktop environment.
Your task is to:
Prepare a PowerPoint briefing for the VideoDev board. Your briefing should:
- Explain the Cloud Computing to the Board:
- What are the main cloud computing concepts that the Board should understand before committing to move to the Cloud? (10 marks) and,
- Why you think that a move to the Cloud could be good for VideoDev (10 marks);
- Explain how you think that VideoDev could move their video processing to the cloud. You will need to discuss:
- Explain the differences between the service models IaaS and PaaS (10 marks)
- What type of service model you would recommend? (10 marks)
- What are the advantages of, and the issues with, the service model that you recommended for VideoDev’s video processing? (10 marks)
- What other types of architectural patterns could be used in this deployment? (20 marks)
- How that move would assist in removing backlogs? (10 marks)
- Which would provide the best SDOE for VideoDev – Amazon WorkSpaces or Windows Virtual Desktop?
- Briefly discuss the advantages and disadvantages of each possible SDOE (10 marks)
- Briefly discuss how the SDOE could be delivered to a staff members laptop (10 marks).
Your presentation is to be completed in either PowerPoint or Google slides. Your presentation must not exceed 30 slides of content.
- The presentation should be a maximum of 30 slides, including introduction, conclusions and recommendations.
- Each slide should have speaking notes in the Notes section which expand on the information in the slide.
- Images and quotations used in slides must be referenced on that slide.
- The slide deck does require a reference list. References are to be included on a Reference list slide(s), but these are not counted as part of the slide deck limit.
Your presentation should highlight the significant points of your argument, but you should include the detail in the speaking notes section of your slides.
Expert Answer ITC561
- Shubham Agarwal answered thisWas this answer helpful?0015 answersThe assignment has requested the video presentation but since a presentation can’t be uploaded here, I’ll try to answer in a format which can be most effectively put in power point slides.
Q1 – What is cloud computing?Cloud computing is the delivery of different services through the Internet. These resources include tools and applications like data storage, servers, databases, networking, and software.Rather than keeping files on a proprietary hard drive or local storage device, cloud-based storage makes it possible to save them to a remote database. As long as an electronic device has access to the web, it has access to the data and the software programs to run it.Cloud computing is named as such because the information being accessed is found remotely in the cloud or a virtual space. Companies that provide cloud services enable users to store files and applications on remote servers and then access all the data via the Internet. This means the user is not required to be in a specific place to gain access to it, allowing the user to work remotely.Cloud computing takes all the heavy lifting involved in crunching and processing data away from the device you carry around or sit and work at. It also moves all of that work to huge computer clusters far away in cyberspace. The Internet becomes the cloud, and voilà—your data, work, and applications are available from any device with which you can connect to the Internet, anywhere in the world.Q2 – Main Cloud Computing concepts
There are 4 major types of clouds :
a)Private Cloud: Here, computing resources are deployed for one particular organization. This method is more used for intra-business interactions. Where the computing resources can be governed, owned and operated by the same organization.
b)Community Cloud: Here, computing resources are provided for a community and organizations.
c)Public Cloud: This type of cloud is used usually for B2C (Business to Consumer) type interactions. Here the computing resource is owned, governed and operated by government, an academic or business organization.
d)Hybrid Cloud: This type of cloud can be used for both type of interactions – B2B (Business to Business) or B2C ( Business to Consumer). This deployment method is called hybrid cloud as the computing resources are bound together by different clouds.
Cloud Computing Architecture
Let’s have a look into Cloud Computing and see what Cloud Computing is made of. Cloud computing comprises of two components front end and back end. Front end consist client part of cloud computing system. It comprise of interfaces and applications that are required to access the cloud computing platform.While back end refers to the cloud itself, it comprises of the resources that are required for cloud computing services. It consists of virtual machines, servers, data storage, security mechanism etc. It is under providers control.Cloud computing distributes the file system that spreads over multiple hard disks and machines. Data is never stored in one place only and in case one unit fails the other will take over automatically. The user disk space is allocated on the distributed file system, while another important component is algorithm for resource allocation. Cloud computing is a strong distributed environment and it heavily depends upon strong algorithm.
Virtualization and Cloud Computing
The main enabling technology for Cloud Computing is Virtualization. Virtualization is a partitioning of single physical server into multiple logical servers. Once the physical server is divided, each logical server behaves like a physical server and can run an operating system and applications independently. Many popular companies’s like VmWare and Microsoft provide virtualization services, where instead of using your personal PC for storage and computation, you use their virtual server. They are fast, cost-effective and less time consuming.For software developers and testers virtualization comes very handy, as it allows developer to write code that runs in many different environments and more importantly to test that code.Virtualization is mainly used for three main purposes :a) Network Virtualization: It is a method of combining the available resources in a network by splitting up the available bandwidth into channels, each of which is independent from the others and each channel is independent of others and can be assigned to a specific server or device in real time.b) Storage Virtualization: It is the pooling of physical storage from multiple network storage devices into what appears to be a single storage device that is managed from a central console. Storage virtualization is commonly used in storage area networks (SANs).c) Server Virtualization: Server virtualization is the masking of server resources like processors, RAM, operating system etc, from server users. The intention of server virtualization is to increase the resource sharing and reduce the burden and complexity of computation from users.Virtualization is the key to unlock the Cloud system, what makes virtualization so important for the cloud is that it decouples the software from the hardware. For example, PC’s can use virtual memory to borrow extra memory from the hard disk. Usually hard disk has a lot more space than memory. Although virtual disks are slower than real memory, if managed properly the substitution works perfectly. Likewise, there is software which can imitate an entire computer, which means 1 computer can perform the functions equals to 20 computers.Q3 – Move to the cloud will be good for Video Dev
Cloud computing is a big shift from the traditional way businesses think about IT resources. Here are seven common reasons organisations are turning to cloud computing services:
Cloud computing eliminates the capital expense of buying hardware and software and setting up and running on-site datacenters—the racks of servers, the round-the-clock electricity for power and cooling, the IT experts for managing the infrastructure. It adds up fast.(ii)Speed
Most cloud computing services are provided self service and on demand, so even vast amounts of computing resources can be provisioned in minutes, typically with just a few mouse clicks, giving businesses a lot of flexibility and taking the pressure off capacity planning.(iii)Global scale
The benefits of cloud computing services include the ability to scale elastically. In cloud speak, that means delivering the right amount of IT resources—for example, more or less computing power, storage, bandwidth—right when it is needed and from the right geographic location.(iv)Productivity
On-site datacenters typically require a lot of “racking and stacking”—hardware setup, software patching, and other time-consuming IT management chores. Cloud computing removes the need for many of these tasks, so IT teams can spend time on achieving more important business goals.(v)Performance
The biggest cloud computing services run on a worldwide network of secure datacenters, which are regularly upgraded to the latest generation of fast and efficient computing hardware. This offers several benefits over a single corporate datacenter, including reduced network latency for applications and greater economies of scale.(vi)Reliability
Cloud computing makes data backup, disaster recovery and business continuity easier and less expensive because data can be mirrored at multiple redundant sites on the cloud provider’s network.(vii)Security
Many cloud providers offer a broad set of policies, technologies and controls that strengthen your security posture overall, helping protect your data, apps and infrastructure from potential threats.Q4. How VideoDev can move their video processing to the cloud?
There are generally 5 phases for the migration process:Phase 1: Migration Preparation and Business PlanningHere the organization determines the right objectives and begin to get an idea of the types of benefits. It starts with some foundational experience and developing a preliminary business case for a migration. This requires taking the objectives into account, along with the age and architecture of the existing applications, and their constraints.
Phase 2: Portfolio Discovery and PlanningNext, the need to understand IT portfolio, the dependencies between applications, and begin to consider what types of migration strategies the organization will need to employ to meet the business case objectives. With the portfolio discovery and migration approach, the organization is in a good position to build a full business case.
Phase 3 & Phase 4: Designing, Migrating, and Validating ApplicationHere the focus moves from the portfolio level to the individual application level and design, migrate, and validate each application. Each application is designed, migrated, and validated according to one of the six common application strategies (“The 6 R’s”). Once the organization have some foundational experience from migrating a few apps and a plan in place that the organization can get behind – it’s time to accelerate the migration and achieve scale.
Phase 5: OperateAs applications are migrated, the organization iterate on its new foundation, turn off old systems, and constantly iterate toward a modern operating model. The operating model becomes an evergreen set of people, process, and technology that constantly improves as organization migrate more applications.
Six Common Application Migration Strategies
1. Rehost (“lift and shift”)In a large legacy migration scenario where the organization is looking to quickly implement its migration and scale to meet a business case, the majority of applications are rehosted. Most rehosting can be automated with tools such as AWS SMS .One may also find that applications are easier to re-architect once they are already running in the cloud. This happens partly because the organization will have developed better skills to do so and partly because the hard part – migrating the application, data, and traffic – has already been accomplished.2. Replatform (“lift, tinker and shift”)This entails making a few cloud optimizations in order to achieve some tangible benefit without changing the core architecture of the application. For example, you may be looking to reduce the amount of time you spend managing database instances by migrating to a managed relational database service such as Amazon Relational Database Service (RDS), or migrating your application to a fully managed platform like AWS Elastic Beanstalk.
3. Repurchase (“drop and shop”)This is a decision to move to a different product and likely means the organization is willing to change the existing licensing model it been using. For workloads that can easily be upgraded to newer versions, this strategy might allow a feature set upgrade and smoother implementation.
4. Refactor / Re-architectTypically, this is driven by a strong business need to add features, scale, or performance that would otherwise be difficult to achieve in the application’s existing environment. If the organization is looking to boost agility or improve business continuity by moving to a service-oriented architecture (SOA) this strategy may be worth pursuing – even though it is often the most expensive solution.
5. RetireIdentifying IT assets that are no longer useful and can be turned off will help boost your business case and direct the organizarion’s attention towards maintaining the resources that are widely used.
6. RetainThe organization may want to retain portions of the IT portfolio because there are some applications that it is not ready to migrate and feel more comfortable keeping them on-premises, or it is not ready to prioritize an application that was recently upgraded and then make changes to it again.
Q5: Explain the differences between the service models IaaS and PaaSPaaS: Platform as a Service
Cloud platform services, or Platform as a Service (PaaS), provide cloud components to certain software while being used mainly for applications. PaaS delivers a framework for developers that they can build upon and use to create customized applications. All servers, storage, and networking can be managed by the enterprise or a third-party provider while the developers can maintain management of the applications.PaaS Delivery
The delivery model of PaaS is similar to SaaS, except instead of delivering the software over the internet, PaaS provides a platform for software creation. This platform is delivered over the web, and gives developers the freedom to concentrate on building the software while still not having to worry about operating systems, software updates, storage, or infrastructure.PaaS allows businesses to design and create applications that are built into the PaaS with special software components. These applications, or middleware, are scalable and highly available as they take on certain cloud characteristics.PaaS Advantages(i)Makes the development and deployment of apps simple and cost-effective
(iv)Gives developers the ability to create customized apps without the headache of maintaining the software
(v)Greatly reduces the amount of coding
(vi)Automates business policy
(vii)Allows easy migration to the hybrid model
PaaS has many characteristics that define it as a cloud service, including:(i)It is built on virtualization technology, meaning resources can easily be scaled up or down as your business changes
(ii)Provides a variety of services to assist with the development, testing, and deployment of apps
(iii)Numerous users can access the same development application
(iv)Web services and databases are integrated
When to Use PaaS
There are many situations where utilizing PaaS is beneficial or even necessary. If there are multiple developers working on the same development project, or if other vendors must be included as well, PaaS can provide great speed and flexibility to the entire process. PaaS is also beneficial if you wish to be able to create your own customized applications. This cloud service also can greatly reduce costs and it can simplify some challenges that come up if you are rapidly developing or deploying an app.PaaS Limitations and Concerns
(i)Data Security: Even though organizations can run their own apps and services using PaaS solutions, the data residing in third-party cloud servers controlled by vendors poses security risks and concerns. The security options may also be limited as customers may not be able to deploy services with specific hosting policies.
(ii)Integrations: The complexity of connecting the data stored within inhouse data center or off-premise cloud is increased and may affect which apps and services can be adopted with the PaaS offering. Especially when not every component of a legacy IT system is built for the cloud, integration with existing services and infrastructure may be a challenge.
(iii)Vendor Lock-In: Business and technical requirements that drive decision for a specific PaaS solution may not apply in the future. If the vendor has not provisioned convenient migration policies, switching to alternative PaaS options may not be possible without affecting the business.
(iv)Customization of Legacy Systems: PaaS may not be a plug-and-play solution for existing legacy apps and services. Several customizations and configuration changes may be necessary for legacy systems to work with the PaaS service. The resulting customization may lead to a complex IT system that may limit the value of the PaaS investment altogether.
(v)Runtime Issues: In addition to limitations associated with specific apps and services, PaaS solutions may not be optimized for the language and frameworks of your choice. Specific framework versions may not be available or perform optimally with the PaaS service and customers may not be able to develop custom dependencies with the platform.
(vi)Operational Limitation: Customized cloud operations management automation workflows may not be applicable to PaaS solutions as the platform tends to limit operational capabilities for end-users. Although this is intended to reduce the operational burden on end-users, the loss of operational control may affect how PaaS solutions are managed, provisioned and operated.
Examples of PaaS
AWS Elastic Beanstalk, Windows Azure, Heroku, Force.com, Google App Engine, Apache Stratos, OpenShiftIaaS: Infrastructure as a Service
Cloud infrastructure services, known as Infrastructure as a Service (IaaS), are made of highly scalable and automated compute resources. IaaS is fully self-service for accessing and monitoring things like computers, networking, storage, and other services, and it allows businesses to purchase resources on-demand and as-needed instead of having to buy hardware outright.IaaS Delivery
IaaS delivers Cloud Computing infrastructure, including things such as servers, network, operating systems, and storage, through virtualization technology. These cloud servers are typically provided to the organization through a dashboard or an API, and IaaS clients have complete control over the entire infrastructure. IaaS provides the same technologies and capabilities as a traditional data center without having to physically maintain or manage all of it. IaaS clients can still access their servers and storage directly, but it is all outsourced through a “virtual data center” in the cloud.IaaS clients are responsible for managing aspects such as applications, runtime, OSes, middleware, and data. However, providers of the IaaS manage the servers, hard drives, networking, virtualization, and storage. Some providers even offer more services outside of the virtualization layer, such as databases or message queuing.IaaS Advantages
There are many benefits of choosing IaaS, such as:(i)It’s the most flexible cloud computing model
(ii)Easily allows for automated deployment of storage, networking, servers, and processing power
(iii)Hardware can be purchased based on consumption
(iv)Gives clients complete control of their infrastructure
(v)Resources can be purchased as-needed
(vi)Is highly scalable
Some characteristics to look for when considering IaaS are:(i)Resources are available as a service
(ii)The cost varies depending on consumption
(iii)Services are highly scalable
(iv)Typically includes multiple users on a single piece of hardware
(v)Provides complete control of the infrastructure to organizations
(vi)Dynamic and flexible
When to Use IaaS
There are specific situations when it is the most advantageous to use IaaS. If you are a startup or a small company, IaaS is a great option because you don’t have to spend the time or money trying to create hardware and software. IaaS is also beneficial for large organizations that wish to have complete control over their applications and infrastructures, but are looking to only purchase what is actually consumed or needed. For rapidly growing companies, IaaS can be a good option since you don’t have to commit to a specific hardware or software as your needs change and evolve. It also helps if you are unsure what demands a new application will require as there is a lot of flexibility to scale up or down as needed.IaaS Limitations and Concerns(i)Security: While the customer is in control of the apps, data, middleware and the OS platform, security threats can still be sourced from the host or other VMs. Insider threat or system vulnerabilities may expose data communication between the host infrastructure and VMs to unauthorized entities.
(ii)Legacy Systems Operating in the Cloud: While customers can run legacy apps in the cloud, the infrastructure may not be designed to deliver specific controls to secure the legacy apps. Minor enhancement to legacy apps may be required before migrating them to the cloud, possibly leading to new security issues unless adequately tested for security and performance in the IaaS systems.
(iii)Internal resources and training: Additional resources and training may be required for the workforce to learn how to effectively manage the infrastructure. Customers will be responsible for data security, backup and business continuity. Due to inadequate control into the infrastructure however, monitoring and management of the resources may be difficult without adequate training and resources available inhouse.
(iv)Multitenant Security: Since the hardware resources are dynamically allocated across users as made available, the vendor is required to ensure that other customers cannot access data deposited to storage assets by previous customers. Similarly, customers must rely on the vendor to ensure that VMs are adequately isolated within the multitenant cloud architecture.
Examples of IaaS
DigitalOcean, Linode, Rackspace, Amazon Web Services (AWS), Cisco Metapod, Microsoft Azure, Google Compute Engine (GCE)