The presentation "Agile Architecture in a Modern Cloud-Native Ecosystem" by Turja N Chaudhuri.
Recording of the presentation: https://www.youtube.com/watch?v=d4kGI3ARn5o
Details of the event: https://www.meetup.com/Cloud-Study-Network/events/283988261/
4. Meet Sam .
Sam has around 10 years
of experience in IT as a
SysAdmin + IT Operator.
Sam recently completed 3
cloud certification exams.
5. With his newfound cloud
knowledge , Sam attends a
Cloud architecture
interview for a prestigious
IT firm .
6. Unfortunately , the interview
does not go well . He is asked
about topics he had not
encountered in the cloud
certification exams .
He gets rejected .
7. Meet Stephanie .
She works as a Lead
Developer in an IT
company.
She has developed quite a
few products using cloud
services.
8. She is asked to take over
the role of a Cloud
Architect for a large-scale
application which will be
published across the
enterprise.
9. She delivers the product , but it
is neither scalable ,nor resilient
enough , even though she is a
great coder , and had put the
best programming standards in
place .
She loses the trust of the client
and as a consequence , her
manager.
10.
11. So , the million $ question is â
1 . What went wrong ?
2 . What did they (particularly) do wrong
?
3 . How can I/you prevent myself/ourself
from doing the same mistakes?
12. Hopefully , at the end of the talk ,
you(the audience) should be in a
better position to
answer these questions yourself !!
We will revisit these 2 scenarios at the end of this talk!!
15. Currently , an Assistant Director,
Cloud Practice at EY (Ernst & Young).
Before that I led the CCOE ( Cloud
Centre Of Excellence Team ) at Accenture.
Have 10+ years of IT experience , working on
Cloud since 2017.
But , most importantly , I successfully transitioned
my career
from being a C#,SQL developer
to a Cloud solution architect.
16. I want to help you do the same , in case
you guys are interested
17. I will try to leave 5-10 minutes at the
end to address any queries you might
have on this topic.
So , you can ask the questions on chat .
If I cannot answer them during the session
I promise , I will personally reach out to you ,
and answer them later.
20. Before ,we go into Cloud Native
Architecture , we need to first understand
the basics.
Note â
Getting the basics right is very important.
In this ever-changing landscape of myriad technologies , it
is only possible to stay relevant , if you understand the
foundation topics .
The trick to note here is that the fundamentals / basics
have not changed that much over the years.
They have stood the test of time .
Today there is Kubernetes tomorrow there will be
something else , but the essence will stay the same (
mostly ).
21. Otherwise , the same issues we faced
earlier (in our on-prem systems
, for example ) , will potentially resurface.
23. IEEE 1471:2000 definition -
ââThe fundamental organization of a system embodied
in its components, their relationships to each other,
and to the environment, and the principles guiding
its design and evolution.ââ
24.
25. Grady Booch , IBM Fellow
ââAll architecture is design but not
all design is architecture;
architecture represents the set of
significant design decisions that shape
the structure and behaviour
of a system where significance
is measured by cost of change.ââ
Ref - https://twitter.com/grady_booch/status/1257355498598342656?lang=en
27. Matthew Parker , previously Global Head
of engineering â Pivotal Labs
âArchitecture , in the field of
software development ,
are decisions that are hard to reverse â
28. Some examples could be -
âWhether to deploy our application on container based
compute environment like Kubernetes or go with
a serverless model like AWS Lambda â
âWhether to go with synchronous API-based
communication or use a event-bus based asynchronous
messaging system like RabbitMQ/AWS SQSâ
OR
OR
âWhat programming language do you use for your
application developmentâ
32. âArchitects have a holistic understanding
of the system , across a different spectrum
of views and viewpoints , and they offer a
different perspective of the
system/design.â
33. âThe architect doesnât have
to be the smartest
person in the room.
Instead they make
everyone else smarter.â
Gregor Hohpe ,
Enterprise Strategist , AWS
https://architectelevator.com/architecture/multiple-dimensions/
36. Architecture matters -
âBad architecture / no architecture slows down the ability of our customers to compete , as over time it becomes
harder and harder to ship new featuresâ
42. Reason 3 - Because , a 2020 survey by
the Job
search engine Indeed says â âSoftware
Architect is the best job â
Look around you , you will see
that architects are typically
paid 5-10x , the salary
of standalone engineers/developers.
46. Cloud architecture is the way technology components combine to build a cloud,
in which resources are pooled through
virtualization technology and shared across a network.
The components of a cloud architecture include:
⢠A front-end platform (the client or device used to access the cloud)
⢠A back-end platform (servers and storage)
⢠A cloud-based delivery model
⢠A network
47.
48. If I had to define Cloud Architecture , or focus on a part of it , that makes the most sense to me , is to go with
the below analogy -
Pets Vs Cattle â If you understand this
you understand Cloud architecture
49. Scalability Reliability Efficient Secure
Maintainable Extensible Observable
Testable
So , in essence we can think of a cloud architecture
as an architecture / design that -
50. Noticed something ?
Essentially , nothing has changed .
All the constraints / quality
attributes that you
needed to maintain in your datacenter
based applications are relevant even now ,
more so than ever .
51. The cloud might
be new , but the
essence of
architecture
remains the
same .
52. Scalability Reliability Efficient Secure
Maintainable Extensible Observable
Testable
And if you can ensure that you manage your solution/architecture to align with the
below constraints/requirements , then you are already doing the right thing -
53. Essentially , the attributes that public cloud offer , for
example â infinite compute , pay as you go offering and so
on , helps architects in building solutions that respect the
quality attributes we discussed before .
Cloud Platforms / Cloud Service
Providers (AWS, Azure,GCP) help
architects in building better solutions
55. Normally , in architecture design , there
are different types of requirements
⢠Functional
⢠UI
⢠Business/Domain
⢠Non-Functional (NFR)
56. Being a cloud architect , you should
focus on documenting , defining ,
implementing and managing the NFR(s)
of the system you are designing.
Typically , these are documented in SADs (
Solution Architecture Documents )
59. Cornelia Davis , Amazon , Cloud
Foundry
âCLOUD-NATIVE = LOOSELY COUPLED
RUNNING IN THE CLOUDâ
âCloud is where you compute ,
Cloud-native is how you computeâ
Ref - https://www.youtube.com/watch?v=VpZHLtu8mj0&t=1045s
60. Cloud native is a big topic , stretching across a lot
of components -
61. Principles of Cloud-native architectures
https://www.ibm.com/cloud/architecture/architecture/practices/cloud-native-principles/
63. âAt a high-level , if you really think about it ,
Cloud native architecture principles
are just extensions of the best practices/standards
that enforces the same NFR(s)
that we discussedâ
64. Letâs take an example â
One of the key principles of cloud native architectures
is immutability .
This means that the infrastructure is not modified in
place after deployment .
This means that we must have an automated way of
creating
a new instance of an application .
This means that if our existing application is down , we can
quickly create a new instance.
This means my application is (as a consequence) RELIABLE
65. So , simply put cloud-native application
architectures are a way to build better applications
that work better , scale better , are more reliable ,
take advantage of the cloud , provided
you play by the rules .
66. The last part is very important â you need to play by the
rules .
Cloud service providers like AWS ,Azure OR cloud native
platforms like Kubernetes , VMWare Tanzu are here
to help , but you still need to architect your
system correctly.
And that is where cloud architects come into play.
67. Cloud-native is an approach to
build & run applications that can
leverage the advantages of the
cloud computing model.
These applications are built and
deployed in a rapid cadence to
the cloud platform and offer
organizations greater agility,
resilience, and portability across
clouds.
In a nutshell ,
68. At this point , it makes sense to briefly introduce
some of the
tools , and practices that make designing
Cloud native applications possible -
69. Mostly , we start our cloud-native journey
by learning about docker , which is good .
But , please understand
Docker != Cloud native
70. But , itâs true , you should learn about
containers , as they really help in building
cloud-native applications .
71. Containers
Ref - https://www.docker.com/resources/what-container
A container is a standard unit of software that
packages up code and all its dependencies so
the application runs quickly and reliably from
one computing environment to another. A
Docker container image is a lightweight,
standalone, executable package of software
that includes everything needed to run an
application: code, runtime, system tools,
system libraries and settings.
Containers isolate software from its
its environment and ensure that it works
works uniformly despite differences for
differences for instance between development
development and staging.
73. But , then how do we manage multiple
containers ?
Container orchestration automates the deployment,
management, scaling, and networking of containers.
Enterprises that need to deploy and manage hundreds or
thousands of containers and hosts can benefit from
container orchestration.
75. Kubernetes -
Kubernetes is a portable, extensible, open-source
platform for managing containerized workloads and
services, that facilitates both declarative configuration
and automation.
It has a large, rapidly growing ecosystem. Kubernetes
services, support, and tools are widely available.
76. Microservices -
Microservice architectural style is an approach to
developing a single application as a suite of small services,
each running in its own process and communicating with
lightweight mechanisms, often an HTTP resource API.
These services are built around business capabilities and
independently deployable by fully automated deployment
machinery.
There is a bare minimum of centralized management of
these services, which may be written in different
programming languages and use different data storage
technologies.
91. 9 . Try to speak on
cloud
technologies/software
architecture at events.
92. 10 . Attend as many
cloud interviews as
possible
93. There is no shortcut
to becoming a good
cloud architect.
You need to spend
the required time ,
and effort .
94. So , coming back to the question â
1 . What went wrong ?
2 . What did they do wrong ?
3 . How can I/you prevent
myself/ourself from doing the same
mistakes?
95. Scenario 1 ( Sam ) â Needs to understand
how architecture is important , and how
to design applications that respect the
NFR(s) to get a Cloud architect role ; only
certifications are not enough
96. Scenario 2 ( Stephanie ) â Only
programming/having a limited
perspective of a system will not help in
large-scale enterprise architecture.
Having a holistic view is equally
important , if not more.