The document discusses building 12 factor microservices using MicroProfile. It begins with an overview of the 12 factors methodology for building cloud-native applications and what a 12 factor app is. It then provides details on each of the 12 factors and how MicroProfile and Kubernetes can be used to implement them when building microservices. Specifically, it discusses using MicroProfile Config, Fault Tolerance, and Kubernetes concepts like configmaps, secrets, and namespaces. It also provides references for further information.
Vertical thinking for a simple architecture!
Micro Services are a new way of architectural thinking in web platforms. The key idea is strongly aligned on the unix philosophy: Create small services which are only responsible for one thing and make them work together. With this in mind, you get simple applications, which can be developed, deployed and scaled independent from each other.
The key challenge in using micro services is to decompose applications vertically, by their functional domains. Only with this, you are able to reduce dependencies and create simple applications.
On a technical side, micro services are backed by a wide support in different programming languages and open source frameworks. Especially the state of the art deployment mechanisms make this approach possible at all.
Building microservices sample applicationAnil Allewar
The slides provide details on how to build the sample Microservices application that covers the whole distributed system paradigm.
Please refer to the introduction to Microservices before following the contents in this slide
https://www.slideshare.net/anilallewar/introduction-to-microservices-78270318
Understanding MicroSERVICE Architecture with Java & Spring BootKashif Ali Siddiqui
This is a deep journey into the realm of "microservice architecture", and in that I will try to cover each inch of it, but with a fixed tech stack of Java with Spring Cloud. Hence in the end, you will be get know each and every aspect of this distributed design, and will develop an understanding of each and every concern regarding distributed system construct.
Vertical thinking for a simple architecture!
Micro Services are a new way of architectural thinking in web platforms. The key idea is strongly aligned on the unix philosophy: Create small services which are only responsible for one thing and make them work together. With this in mind, you get simple applications, which can be developed, deployed and scaled independent from each other.
The key challenge in using micro services is to decompose applications vertically, by their functional domains. Only with this, you are able to reduce dependencies and create simple applications.
On a technical side, micro services are backed by a wide support in different programming languages and open source frameworks. Especially the state of the art deployment mechanisms make this approach possible at all.
Building microservices sample applicationAnil Allewar
The slides provide details on how to build the sample Microservices application that covers the whole distributed system paradigm.
Please refer to the introduction to Microservices before following the contents in this slide
https://www.slideshare.net/anilallewar/introduction-to-microservices-78270318
Understanding MicroSERVICE Architecture with Java & Spring BootKashif Ali Siddiqui
This is a deep journey into the realm of "microservice architecture", and in that I will try to cover each inch of it, but with a fixed tech stack of Java with Spring Cloud. Hence in the end, you will be get know each and every aspect of this distributed design, and will develop an understanding of each and every concern regarding distributed system construct.
This deck is about Microservices Architecture and why do we need it, architecture patterns which need to be followed during Microservices development, and about few tricky questions like API Versioning and
Decomposition Recipes
Building a High-Performance Reactive Microservices ArchitectureCognizant
For digital IT organizations, employing a microservices architecture built on reactive principles is a viabke option to ensure responsive, reliable and scalable systems or applications. The Vert.x toolkit can be a key component of reactive microservices success.
From a monolith to microservices + REST: The evolution of LinkedIn's architec...Karan Parikh
This is the story of LinkedIn's journey from a monolithic web application to a microservice based architecture, some of the challenges they faced along the way, and the tools they built to make this transition possible, including the Rest.li and Deco frameworks.
Ever wondered what makes a cloud-native application “cloud-native”? Ever wondered what the unique challenges are and how best to address them on fully-open Java technologies? In this workshop, you’ll learn what it means to be cloud-native and how that impacts application development. You’ll learn about Eclipse MicroProfile, an industry collaboration defining technologies for the development and management of cloud-native microservices. With a full set of MicroProfile workshop modules available to you, you’ll be able to start with the basics of REST services and progress to more advanced topics, or you can jump right in and develop secure, fault tolerant, configurable and monitorable microservices.
Once you’ve developed your microservice, you’ll learn how to package it in a Docker container and deploy it to a Kubernetes cluster. Finally, you’ll learn the role OpenShift the hybrid cloud enterprise container platform. You'll deploy your application, scale it up and create routes that allow you to manage traffic to and from your deployments.
Azure Functions enable the creation of event-driven, compute-on-demand systems that can be triggered by various external events. In this session, you will learn
1. How to leverage functions to execute server-side logic
2. Build serverless architectures
3. Key-vault integration
4. Leveraging durable features
5. Hosting web sites
6. Applying dependency injections
7. Monitoring functions
8. Script-based deployment
This presentation covers both the Cloud Foundry Elastic Runtime (known by many as just "Cloud Foundry") as well as the Operations Manager (known by many as BOSH). For each, the main components are covered with interactions between them.
The twelve-factor app is designed for continuous deployment by keeping the gap between development and production small. For example, make the time gap small, make the personnel gap small & make the tools gap small. Learn more about how a Cloud vendor must provide a platform for 12-factor / Cloud Native development and deployment with identified anti-patterns.
Pivotal Cloud Foundry 2.4: A First LookVMware Tanzu
Join Dan Baskette and Jared Ruckle for a view into Pivotal Cloud Foundry (PCF) 2.4 capabilities with demos and expert Q&A. We’ll review the latest features for Pivotal’s flagship app platform, including the following:
- Native zero downtime push and native zero downtime restarts
- Dynamic egress policies
- Operations Manager updates
- Zero downtime stack updates to cflinuxfs3
- Zero downtime OS updates
- New pathways protected by TLS
- New scanning tools to assist with compliance
Plus much more!
Presenters : Dan Baskette, Director, Technical Marketing, Jared Ruckle, Principal Product Marketing Manager
Azure Private Link provides private connectivity from a virtual network to Azure platform as a service (PaaS), customer-owned, or Microsoft partner services.
PaaS Anywhere - Deploying an OpenShift PaaS into your Cloud Provider of ChoiceIsaac Christoffersen
Choice matters. And OpenShift Enterprise by Red Hat is the only Platform-as-a-Service (PaaS) product that runs in the hosting environment of your choice.
While true PaaS products provide a level of infrastructure abstraction so developers can be more productive, choosing the right environment to host your PaaS product is critical. You must take many factors into consideration, like cost, availability, scalability, and manageability. Having a PaaS product that’s truly environment-agnostic can maximize your options and help you make the choice that best fits your needs.
This talk has a demo of deploying OpenShift Enterprise to multiple public cloud providers and within local virtual machines. By using common provisioning tools and the various cloud vendor APIs, you’ll see the realization of open, hybrid PaaS. You’ll also learn about considerations when running OpenShift Enterprise in these different environments, and monitoring strategies for proactively maintaining the health of an OpenShift Enterprise environment.
Easy integration of Bluemix services with your applicationsJack-Junjie Cai
This presentation talks about how your Java EE and node.js applications can easily consume various cloud services available in the IBM Bluemix cloud platform. IBM Bluemix is based CloudFoundry.
This deck is about Microservices Architecture and why do we need it, architecture patterns which need to be followed during Microservices development, and about few tricky questions like API Versioning and
Decomposition Recipes
Building a High-Performance Reactive Microservices ArchitectureCognizant
For digital IT organizations, employing a microservices architecture built on reactive principles is a viabke option to ensure responsive, reliable and scalable systems or applications. The Vert.x toolkit can be a key component of reactive microservices success.
From a monolith to microservices + REST: The evolution of LinkedIn's architec...Karan Parikh
This is the story of LinkedIn's journey from a monolithic web application to a microservice based architecture, some of the challenges they faced along the way, and the tools they built to make this transition possible, including the Rest.li and Deco frameworks.
Ever wondered what makes a cloud-native application “cloud-native”? Ever wondered what the unique challenges are and how best to address them on fully-open Java technologies? In this workshop, you’ll learn what it means to be cloud-native and how that impacts application development. You’ll learn about Eclipse MicroProfile, an industry collaboration defining technologies for the development and management of cloud-native microservices. With a full set of MicroProfile workshop modules available to you, you’ll be able to start with the basics of REST services and progress to more advanced topics, or you can jump right in and develop secure, fault tolerant, configurable and monitorable microservices.
Once you’ve developed your microservice, you’ll learn how to package it in a Docker container and deploy it to a Kubernetes cluster. Finally, you’ll learn the role OpenShift the hybrid cloud enterprise container platform. You'll deploy your application, scale it up and create routes that allow you to manage traffic to and from your deployments.
Azure Functions enable the creation of event-driven, compute-on-demand systems that can be triggered by various external events. In this session, you will learn
1. How to leverage functions to execute server-side logic
2. Build serverless architectures
3. Key-vault integration
4. Leveraging durable features
5. Hosting web sites
6. Applying dependency injections
7. Monitoring functions
8. Script-based deployment
This presentation covers both the Cloud Foundry Elastic Runtime (known by many as just "Cloud Foundry") as well as the Operations Manager (known by many as BOSH). For each, the main components are covered with interactions between them.
The twelve-factor app is designed for continuous deployment by keeping the gap between development and production small. For example, make the time gap small, make the personnel gap small & make the tools gap small. Learn more about how a Cloud vendor must provide a platform for 12-factor / Cloud Native development and deployment with identified anti-patterns.
Pivotal Cloud Foundry 2.4: A First LookVMware Tanzu
Join Dan Baskette and Jared Ruckle for a view into Pivotal Cloud Foundry (PCF) 2.4 capabilities with demos and expert Q&A. We’ll review the latest features for Pivotal’s flagship app platform, including the following:
- Native zero downtime push and native zero downtime restarts
- Dynamic egress policies
- Operations Manager updates
- Zero downtime stack updates to cflinuxfs3
- Zero downtime OS updates
- New pathways protected by TLS
- New scanning tools to assist with compliance
Plus much more!
Presenters : Dan Baskette, Director, Technical Marketing, Jared Ruckle, Principal Product Marketing Manager
Azure Private Link provides private connectivity from a virtual network to Azure platform as a service (PaaS), customer-owned, or Microsoft partner services.
PaaS Anywhere - Deploying an OpenShift PaaS into your Cloud Provider of ChoiceIsaac Christoffersen
Choice matters. And OpenShift Enterprise by Red Hat is the only Platform-as-a-Service (PaaS) product that runs in the hosting environment of your choice.
While true PaaS products provide a level of infrastructure abstraction so developers can be more productive, choosing the right environment to host your PaaS product is critical. You must take many factors into consideration, like cost, availability, scalability, and manageability. Having a PaaS product that’s truly environment-agnostic can maximize your options and help you make the choice that best fits your needs.
This talk has a demo of deploying OpenShift Enterprise to multiple public cloud providers and within local virtual machines. By using common provisioning tools and the various cloud vendor APIs, you’ll see the realization of open, hybrid PaaS. You’ll also learn about considerations when running OpenShift Enterprise in these different environments, and monitoring strategies for proactively maintaining the health of an OpenShift Enterprise environment.
Easy integration of Bluemix services with your applicationsJack-Junjie Cai
This presentation talks about how your Java EE and node.js applications can easily consume various cloud services available in the IBM Bluemix cloud platform. IBM Bluemix is based CloudFoundry.
Spring Boot - Microservice Metrics MonitoringDonghuKIM2
마이크로서비스 아키텍쳐에서의 분산된 서비스간의 모니터링 방법을 소개합니다.
- Microservice Monitoring with Service Discovery (Eureka) Spring Boot Admin
- Microservice Monitoring with Service Discovery (Consul), Prometheus, Grafana
Everything you need to know about creating, managing and debugging Java applications on IBM Bluemix. This presentation covers the features the IBM WebSphere Application Server Liberty Buildpack provides to make Java development on the cloud easier. It also covers the Eclipse tooling support including remote debugging, incremental update, etc.
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsVMware Tanzu
Digital transformation includes replatforming applications to streamline release cycles, improve availability, and manage apps and services at scale. But many enterprises are afraid to take the first step because they don’t know where to start. In this webinar, Rohit will provide a step-by-step guide that covers:
● How to find high-value modernization projects within your application portfolio
● Easy tools and techniques to minimally change applications in preparation for replatforming
● How to choose the platform with the right level of abstraction for your app
● Examples that show how Java EE Websphere applications can be deployed to Pivotal Cloud Foundry
Speaker: Rohit Kelapure, Pivotal Consulting Practice Lead
Learn how to Leverage Kubernetes to Support 12 Factor for Enterprise AppsMichael Elder
Brad Topol & Michael Elder, IBM
“12 Factor” is a software methodology for building scalable microservice applications that provides best practices designed to enable applications to be built with portability, resilience, and scalability when deployed to the web. In this talk we provide an overview of the 12 Factor methodology and describe how the core constructs provided by Kubernetes can be leveraged to support the 12 factors for scalable web apps. In this talk we will provide live demonstrations of how Kubernetes can support 12 Factor for not only newer cloud native applications, but also for legacy enterprise middleware applications that include stateful and transactional workloads.
Accelerate Digital Transformation with IBM Cloud PrivateMichael Elder
Latest version: https://www.slideshare.net/MichaelElder/accelerate-digital-transformation-with-ibm-cloud-private-81258443
Accelerate the journey to cloud-native, refactor existing mission-critical workloads, and catalyze enterprise digital transformations.
How do you ensure the success of your enterprise in highly competitive market landscapes? How will you deliver new cloud-native workloads, modernize existing estates, and drive integration between them?
How does one choose to architect a system that has a Microservice / REST API endpoints? There are many solutions out there. Some are better than others. Should state be held in a server side component, or externally? Generally we are told this is not a good practice for a Cloud Native system, when the 12-factor guidelines seem to be all about stateless containers, but is it? It’s unclear and this confusion may lead to poor technology stack choices that are impossible or extremely hard to change later on as your system evolves in terms of demand and performance.
While stateless systems are easier to work with, the reality is that we live in a stateful world, so we have to handle the state of data accordingly to ensure data integrity beyond securing it.
We will examine and demonstrate the fundamentals of a Cloud Native system with Stateful Microservices that’s built with Open Liberty and MicroProfile.
UtrechtJUG_Exploring statefulmicroservices in a cloud-native world.pptxGrace Jansen
How does one choose to architect a system that has a Microservice / REST API endpoints? There are many solutions out there. Some are better than others. Should state be held in a server side component, or externally? Generally we are told this is not a good practice for a Cloud Native system, when the 12-factor guidelines seem to be all about stateless containers, but is it? It’s unclear and this confusion may lead to poor technology stack choices that are impossible or extremely hard to change later on as your system evolves in terms of demand and performance.
While stateless systems are easier to work with, the reality is that we live in a stateful world, so we have to handle the state of data accordingly to ensure data integrity beyond securing it.
We will examine and demonstrate the fundamentals of a Cloud Native system with Stateful Microservices that’s built with Open Liberty and MicroProfile.
Speaker:
Owen Garrett
Sr. Director, Product Management
NGINX, Inc.
On-Deman Link: https://www.nginx.com/resources/webinars/need-service-mesh/
About the webinar:
Service mesh is one of the hottest emerging technologies. Even though it’s a nascent technology, many vendors have already released their implementation. But do you really need a service mesh?
Attend this webinar to learn about the levels of maturity on the journey to modernizing your apps using microservices, and the traffic management approaches best suited to each level. We’ll help you figure out if you really need a service mesh.
An architect’s guide to leveraging your incumbencyMichael Elder
O'Reilly Software Architecture Conference 2018 (London)
Continuous delivery for 12-factor Microservices works because it’s by design. When you can architect a solution for continuous delivery, you control all the angles but what do you do when you don’t have that luxury? This session will highlight how modernizing existing IT infrastructure with containers enables you to manage change through continuous delivery and reduce ongoing operational costs.
Abstract
While the industry has promoted a dramatic trend to build new, improved styles of architecture; there remains a gap in how to address the ongoing and continuous improvement and operation of existing enterprise IT systems alongside these new 12-factor apps.
In this session, we will review why 12-factor apps are a natural fit for Kubernetes by design. We will demonstrate how Kubernetes addresses virtually all of the 12 factors for scalable web apps. Then we will take a step back and consider the important question: how well will stateful and transactional workloads that were not designed for 12-factor be able to run within Kubernetes?
Even with purist gaps from 12-factor for traditional enterprise workloads, there are real benefits to velocity and cost management to move stateful and transactional workloads to containers. With a container based orchestrator like Kubernetes, all workload types can take advantage of automated DevOps release pipelines, provide rich feedback loops with canary testing, leverage better automated failure recovery in production, and provide easier visibility into the operational health of services running within Kubernetes. Leveraging a standard platform for a blend of architectural types enables an enterprise to standardize operational practices for across the board. The end result might be the right path for your enterprise to drive your digital transformation.
When you move an application to cloud, it is important to design it for the cloud, rather than a lift and shift. Twelve factors provide you architecture guidelines for designing a cloud "native" application.
Accelerate Digital Transformation with IBM Cloud PrivateMichael Elder
Accelerate the journey to cloud-native, refactor existing mission-critical workloads, and catalyze enterprise digital transformations.
How do you ensure the success of your enterprise in highly competitive market landscapes? How will you deliver new cloud-native workloads, modernize existing estates, and drive integration between them?
This talk, a case study in application deployment models, was given at IBM InterConnect 2017 in Las Vegas, NV on March 21, 2017 by Lin Sun & Phil Estes of IBM Cloud.
In this talk, Lin & Phil provided a background of IBM Bluemix compute offerings across Cloud Foundry, Containers + Kubernetes, and FaaS/serverless via OpenWhisk and then used a demo application to describe the tradeoffs between using the various deployment models and technology. The application is open source and available at https://github.com/estesp/flightassist
Cloud native programming model comparisonEmily Jiang
This deck provides a side-by-side comparison between two popular cloud native programming models: MicroProfile vs. Spring boot. It lists similiarilities and differences between them
New and smart way to develop microservice for istio with micro profileEmily Jiang
The new and smart way to develop microservices for Istio - Eclipse MicroProfile
Focus on MicroProfile and demonstrate 8 MicroProfile specifications with some overview on Istio
Saudi Arabia stands as a titan in the global energy landscape, renowned for its abundant oil and gas resources. It's the largest exporter of petroleum and holds some of the world's most significant reserves. Let's delve into the top 10 oil and gas projects shaping Saudi Arabia's energy future in 2024.
Overview of the fundamental roles in Hydropower generation and the components involved in wider Electrical Engineering.
This paper presents the design and construction of hydroelectric dams from the hydrologist’s survey of the valley before construction, all aspects and involved disciplines, fluid dynamics, structural engineering, generation and mains frequency regulation to the very transmission of power through the network in the United Kingdom.
Author: Robbie Edward Sayers
Collaborators and co editors: Charlie Sims and Connor Healey.
(C) 2024 Robbie E. Sayers
Water scarcity is the lack of fresh water resources to meet the standard water demand. There are two type of water scarcity. One is physical. The other is economic water scarcity.
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Dr.Costas Sachpazis
Terzaghi's soil bearing capacity theory, developed by Karl Terzaghi, is a fundamental principle in geotechnical engineering used to determine the bearing capacity of shallow foundations. This theory provides a method to calculate the ultimate bearing capacity of soil, which is the maximum load per unit area that the soil can support without undergoing shear failure. The Calculation HTML Code included.
1. Build a 12 factor
microservice
-- on staging hacking
Emily Jiang
STSM, Liberty Architect of Microservicers, Advocate
Liberty Architect for MicroProfile and CDI, IBM
@emilyfhjiang
2. About Emily
2
Java Champion
STSM, IBM, Liberty Lead Architect for MicroProfile and CDI
Leads MicroProfile Config, Fault Tolerance, Service Mesh
Co-spec lead for Config JSR
CDI Expert Group
Based in IBM’s Hursley lab, UK
Emily Jiang
@emilyfhjiang Email: emijiang@uk.ibm.comhttps://www.linkedin.com/in/emily-jiang-60803812/
3. Contents
Basic concept of 12 factor app
On stage hacking of creating a 12 factor microservice using MicroProfile
4. 12 Factors in a nut shell
– A methodology
– Best Practices
– Manifesto
https://12factor.net/ by Heroku
5. Why 12 factor?
• Define the contract between applications and infrastructure
Application Infrastructure
6. What is aTwelve-FactorApp?
In the modern era, software is commonly delivered as a service: called web apps, or software-as-a-service.The twelve-factor app is
a methodology for building software-as-a-service apps that:
Use declarative formats for setup automation, to minimize time and cost for new developers joining the project;
Have a clean contract with the underlying operating system, offering maximum portability between execution environments;
Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;
Minimize divergence between development and production, enabling continuous deployment for maximum agility;
And can scale up without significant changes to tooling, architecture, or development practices.
The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of
backing services (database, queue, memory cache, etc).
From https://12factor.net
7. THE FACTORS
1. Codebase
2. Dependencies
3. Config
4. Backing Services
5. Build, Release, Run
6. Processes
7. Port binding
8. Concurrency
9. Disposability
10. Dev / Prod parity
11. Logs
12. Admin Processes
9. Open specifications
Wide vendor support
REST services
OpenAPI support
Security
Fault Tolerance
Configuration
Metrics
Health
Open Tracing
https://wiki.eclipse.org/MicroProfile/Implementation
Quarkus
10. I. Codebase
• Dedicate smaller teams to individual applications or microservices.
• Following the discipline of single repository for an application forces the
teams to analyze the seams of their application, and identify potential
monoliths that should be split off into microservices.
“One codebase tracked in revision control, many deploys.”
Use a single source code repository for a single application
(1:1 relation). Deployment stages are different tags/branches
i.e. use a central git repo (external Github/GitHub Enterprise
also suitable)
11. II. Dependencies
A cloud-native application does not rely on the pre-existence of dependencies in a
deployment target.
DeveloperTools declare and isolate dependencies
• Maven and Gradle for Java
“Explicitly declare and isolate dependencies”
Each microservice has its own dependencies declared (e.g. pom.xml)
12. III. Config
“Store config in the environment”
Changing config should not need to repackage your application
Use Kubernetes configmaps and secrets (rather than environment variables) for container
services
Use MicroProfile Config to inject the config properties into the microservices
App Password=blah
14. V. Build, release, run
“Strictly separate build and run stages”
Source code is used in the build stage. Configuration data is added to define a release
stage that can be deployed. Any changes in code or config will result in a new build/release
Needs to be considered in CI pipeline
IBM
• UrbanCode Deploy
• IBM Cloud Continuous
Delivery Service
Azure
• Visual StudioTeam Services
(VSTS) (includes git)
• Web App for Containers
feature of Azure App Service
AWS
• AWS CodeBuild
• AWS CodeDeploy
• AWS CodePipeline (not yet
integrated with EKS)
16. VII. Port binding
“Export services via port binding”
Applications are fully self-contained and expose services only through ports. Port
assignment is done by the execution environment
Ingress/service definition of k8s manages mapping of ports
Use MP Config to inject ports to microservices for chain-up invocations
Port=80
@Inject @ConfigProperty(name=”port”, defaultValue=“9080”)
17. VIII. Concurrency
“Scale out via the process model”
Applications use processes independent from each other to scale out (allowing for load
balancing)
To be considered in application design
Cloud autoscaling services: [auto]scaling built into k8s
Build micorservices
18. IX. Disposability
“Maximize robustness with fast startup and graceful shutdown”
Processes start up fast.
Processes shut down gracefully when requested.
Processes are robust against sudden death
Use MicroProfile FaultTolerance to make it resilient
From “CERN Data Centre Evolution”
19. X. Dev/prod parity
“Keep development, staging, and production as similar as possible”
Development and production are as close as possible (in terms of code, people, and
environments)
Can use helm to deploy in repeatable manner
Use (name)spaces for isolation of similar setups
20. XI. Logs
“Treat logs as event streams”
App writes all logs to stdout
Use a structured output for meaningful logs suitable for analysis. Execution environment
handles routing and analysis infrastructure
21. XII. Admin processes
“Run admin/management tasks as one-off processes”
Tooling: standard k8s tooling like “kubectl exec” or Kubernetes Jobs
Also to be considered in solution/application design
For example, if an application needs to migrate data into a database, place this task into a
separate component instead of adding it to the main application code at startup
22. THE FACTORS
1. Codebase
2. Dependencies
3. Config
4. Backing Services
5. Build, Release, Run
6. Processes
7. Port binding
8. Concurrency
9. Disposability
10. Dev / Prod parity
11. Logs
12. Admin Processes
23. MicroProfile Config
Why?
– Configure Microservice without repacking the
application
How?
– Specify the configuration in configure sources
– Access configuration via
• Programmatically lookup
Config config =ConfigProvider.getConfig();
config.getValue(“myProp”, String.class);
• Via CDI Injection
@Inject
@ConfigProperty(name="my.string.property")
String myPropV;
28. Backup: Using IBM Cloud Private
Codebase Source: Github Enterprise,
github
Images: any registry, IBM
Cloud private registry
Dependencies Dependency management
of language environment;
container build process for
repeatable inclusion of
dependencies
Config k8s configmaps and secrets
Backing services Use configuration (see
previous factor) to define
target server as used by
application
Build, release, run UrbanCode Deploy
UrbanCode Release
Plus k8s mechanisms with CI
tooling
Processes To be considered in
application design
Port binding Application needs to expose
ports. Ingress/service
definition of k8s manages
mapping of ports
Concurrency App design ([auto]scaling
built into k8s)
Disposability App design
Dev/prod parity Can use helm to deploy in
same way. Namespaces for
isolation of similar areas
Logs ELK as part of ICP (or RYO)
Admin processes App design; standard k8s
tooling like “kubectl exec” or
Kubernetes Jobs
Editor's Notes
Application design influences the infrastructure required (Kubernetes, Database selection, etc…)
Application design guides price; a cloud-native application can be resilient without surplus infrastructure
Some services are provided by an application but some are provided from the infrastructure
Applications depend on the features and services of infrastructure to support agile development.
Infrastructure requires applications to expose endpoints and integrations to be managed autonomously (e.g. Kubenetes asks applications to expose health endpoint)
Increased resource and memory consumption of independently running components that need their own runtime containers with more memory and CPU
Development, deployment, and operational management overheads can be expensive, requiring a high initial investment to run
Java EE 8 progress was very slow.
Cloud-native requirements not being addressed quickly enough
MicroProfile set up in Mid 2016 as an industry collaboration.
A codebase is any single repo (in a centralized revision control system like Subversion), or any set of repos who share a root commit (in a decentralized system like Git where changes are committed.) Also in Git – scenario of repository per package/service.
multiple repository advantages:
Clear ownership: team that owns a service is clearly responsible for independently develop and deploy the full stack of that service
Smaller code base: Separate repositories for a service leads to smaller code base and lesser complexity during code merge.
Narrow clones: faster DevOps and automated build and releases as smaller code base means lesscode download/clone time
multiple repository disadvantages:
Difficult development and debugging: development, cross team communications and shared codes are difficult to maintain and thus development and debugging can be an issue
Abstracts the knowledge of the platform: Since each team is only responsible for a single service, integration becomes an issue and knowledge of the platform can decrease
Multiple Everything: Multiple dependencies, duplication and integrations
Do these make sense? –HJ
(struggling how these offerings help pushing configurations –ub)
Let’s leave them because we have the space. I’m not really attached to them, so we can delete…
A backing service is any service on which an application relies (data stores, messaging systems, caching systems, security services)
Use configuration (see factor III) to define target service as used by application. Configuration defines access to a backing service
Resource Binding should be done via external configuration.
Attach and detach backing services from an application at will, without re-deploying the application.
Fault Tolerance pattern: allow code to stop communicating with misbehaving backing services, providing a fallback path
Components are stateless and shared-nothing. State can be put in a stateful backing service (database)
Stateless components can be replaced quickly if they fail
Avoid dependencies on sticky sessions and keep session data in a persistent store to ensure traffic can be routed to other processes without service disruption
To be considered in application design by the developer, not in Cloud roll-out
Application design influences the infrastructure required (Kubernetes, Database selection, etc…)
Application design guides price; a cloud-native application can be resilient without surplus infrastructure
Some services are provided by an application but some are provided from the infrastructure
Applications depend on the features and services of infrastructure to support agile development.
Infrastructure requires applications to expose endpoints and integrations to be managed autonomously (e.g. Kubenetes asks applications to expose health endpoint)
Increased resource and memory consumption of independently running components that need their own runtime containers with more memory and CPU
Development, deployment, and operational management overheads can be expensive, requiring a high initial investment to run
Application design influences the infrastructure required (Kubernetes, Database selection, etc…)
Application design guides price; a cloud-native application can be resilient without surplus infrastructure
Some services are provided by an application but some are provided from the infrastructure
Applications depend on the features and services of infrastructure to support agile development.
Infrastructure requires applications to expose endpoints and integrations to be managed autonomously (e.g. Kubenetes asks applications to expose health endpoint)
Increased resource and memory consumption of independently running components that need their own runtime containers with more memory and CPU
Development, deployment, and operational management overheads can be expensive, requiring a high initial investment to run