You have finished developing a full stack web application in the cloud. In the final iteration, you completed the API and tested the project, then you documented the process using a presentation. In this assignment, you will summarize the specific skills you learned in CS 470 and apply this to a description of your strengths as a developer, based on your qualities, skills, and experiences. Additionally, you will synthesize your knowledge about cloud service concepts to describe how you would plan for the future growth of your web application. The “Planning for Growth” section will highlight your ability to think ahead, and to apply complex concepts to planning for scale and elasticity in the cloud. This section is weighted more heavily than the other two criteria.
Specifically, you must address the following rubric criteria:
Experiences and Strengths: Explain how this course will help you in reaching your professional goals.
What skills have you learned, developed, or mastered in this course to help you become a more marketable candidate in your career field?
Identify the types of roles you are prepared to assume in a new job.
Planning for Growth: Synthesize the knowledge you have gathered about cloud services.
Explain several pros and cons that would be deciding factors in plans for expansion.
What roles do elasticity and pay-for-service play in decision making for planned future growth?
Competency
In this project, you will demonstrate your mastery of the following
competencies:
•
•
Apply cloud-based development principles and best practices in
application development
Develop applications that run on cloud-based frameworks
Scenario
You are a developer for QnA, a startup company. You just completed the
development of a full stack web application and watched app usage take off
after the implementation of in-house servers. It’s an exciting time for the
company. The company is growing, and you can feel the growing pains. The
company is expecting a drastic increase in customers. You notice that the
once-fluid office environment that allowed customers to choose their favorite
devices and platforms has led to major limitations in collaboration.
Development has become siloed, and sometimes only one key person can
manage certain aspects of the application. To continue to allow your
application to expand with the growing company, you need a solution for
moving the application to a cloud-based framework.
In this project, you will explore cloud development frameworks for leveraging
cloud infrastructure to support your application. This project will allow you to
migrate your web application from the desktop to a cloud-based environment.
All of these iterations will show you how the cloud is designed to make scaling
up and growing your business more efficient. The IT team has determined that
Amazon Web Services (AWS) provides a Platform as a Service capability that
allows you to minimize system management and efficiently run services by
dynamically scaling an application’s capacity to run up and down. You will be
leveraging the principle of elasticity.
Directions
Specifically, your web application must demonstrate your ability to do the
following:
Frontend: Establish an S3 server to host a static Angular website.
•
Prepare the client-side and web server setup, and apply the principles of
serverless web hosting by moving frontend-Angular to the cloud.
•
Prepare S3 storage buckets and objects and IAM security settings.
Now that you have created your containers, you can see there are benefits and
pitfalls to this approach. Your director wants to ensure that your site is elastic,
is secure, can process data quickly, and can keep up with the amount of traffic
and transactions as the number of customers increases. Her thought is to
utilize more AWS products and move the frontend to S3, a serverless solution.
You will be running your application in a serverless environment using a cloudbased database solution and detaching the Angular frontend and running it in
the cloud, removing the need for the original server.
Backend and API: Migrate all of the server-side business logic.
•
•
•
•
Demonstrate how Lambda containers can be used to distribute
functionality in a serverless environment.
Migrate all of the server-side business logic; apply principles of
serverless API by writing code.
Establish IAM security policy updates to protect the website and
database.
Change the API Gateway to connect the Lambdas.
As you explore native cloud services you will discover best practices that
simplify the work of a developer, leaving them focused on developing rather
than continuously working on maintaining the existing infrastructure.
In the final phase, you will deconstruct the full stack application APIs and turn
them into microservices, making them fully cloud-native applications. This
involves adding CRUD functionality and API Gateway using Lambdas to
eliminate the need for the original MEAN server.