SlideShare a Scribd company logo
1 of 135
Download to read offline
Cocktail of Environments
How to Mix Test and Development Environments and Stay Alive
@aatarasoff
@aatarasoff
@aatarasoff
2
@aatarasoff
3
Prologue: No Good Solutions
4
5
No microservices - no problems
6
No microservices - no problems
Testing locally - easy
7
No microservices - no problems
Testing locally - easy
Testing in dev
environment - easy
8
No microservices - no problems
Testing locally - easy
Testing in dev
environment - easy
Testing in test/stage
environment - easy
9
No microservices - no problems
Testing in dev
environment - easy
Testing in test/stage
environment - easy
Testing locally - easy
Testing one - easy
Testing one - easy
Testing many - hard
Chapter 1: Baking Dev Environment
13
14
Work on my machine
15
Work on my machine
Limited number of
services
16
Work on my machine
Limited number of
services
Separated
configuration
17
Telepresence
18
Telepresence
Async processes?
19
Local Async Process Testing
20
Local Async Process Testing
Who will read
a message?
Benefits
● Fast feedback loop
● Good for simple usecases
Drawbacks
● Hard to test complex scenarios
● Hard to collaborate
○ QA
○ other developers
Local Only
21
22
Full Copy for each Developer
23
Full Copy for each Developer
24
Full Copy for each Developer
Own logical DB
25
Full Copy for each Developer
Own logical DB
Own topics and
subscriptions
Issues to
address
● Tool to establish “Vasya” env
○ 10-15 minutes max
● Handle the load
○ 10k workloads and much more
● Support separated infra components
○ dbs in containers
○ emulators for queues
26
Issues to
address
● Tool to establish “Vasya” env
○ 10-15 minutes max
● Handle the load
○ 10k workloads and much more
● Support separated infra components
○ dbs in containers
○ emulators for queues
27
Issues to
address
● Tool to establish “Vasya” env
○ 10-15 minutes max
● Handle the load
○ 10k workloads and much more
● Support separated infra components
○ dbs in containers
○ emulators for queues
28
Optimizations
● Part copy instead of full
○ core services first
○ specific services on-demand
● Shutdown every night
● Env per squad not developer
● Get rid of X
○ do not use service mesh
○ do not keep logs
29
Optimizations
● Part copy instead of full
○ core services first
○ specific services on-demand
● Shutdown every night
● Env per squad not developer
● Get rid of X
○ do not use service mesh
○ do not keep logs
30
Optimizations
● Part copy instead of full
○ core services first
○ specific services on-demand
● Shutdown every night
● Env per squad, not developer
● Get rid of X
○ do not use service mesh
○ do not keep logs
31
Optimizations
● Part copy instead of full
○ core services first
○ specific services on-demand
● Shutdown every night
● Env per squad, not developer
● Get rid of X
○ do not use service mesh
○ do not keep logs
32
Benefits
● Full isolation
● The cognitive load is low
Drawbacks
● Custom configuration
● High resources consumption
● You own - you troubleshooting
Full Copy for each Developer
33
34
Service Injection
35
Service Injection
As a developer I created new
branch: feature/mp-101-bla-bla
36
Service Injection
Deploy each branch to
dev cluster
37
Service Injection
x-service-route: payment-service:mp-101
38
Service Injection
x-service-route: payment-service:mp-101
Nginx unpacks cookie to header
39
We Need More Branches
x-service-route: payment-service:mp-101::cart-service:mp-102
40
We Need More Branches
Async processes?
Benefits
● Low resources consumption
● Less troubleshooting required
● Convinient collaboration
Drawbacks
● Shared resources - poor isolation
● Hard to test async processes
Service Injection
41
Chapter 2: What are You, Stable Dev?
42
43
Typical Environments
44
Atypical Environments
45
Atypical Environments
46
One Cluster - Several Environments
47
Stable Dev
Always contains all the services with
the same versions as in production
48
Stable Dev
Default routes come to it
Always contains all the services with
the same versions as in production
49
Stable Dev
Foundation for developing, testing, and staging
50
Stable Dev
Foundation for developing, testing, and staging
Steady as a rock
51
Stable Dev
Foundation for developing, testing, and staging
Steady as a rock
Developers should
not TEST on it
52
Branch Dev
Developers test
in branch
53
Branch Dev
“x-service-route” Cookie or HTTP Header
54
Canary Dev
Every new release
is deployed as a
candidate first
55
Canary Dev
Every new release
is deployed as a
candidate first
x-service-route: payment-service:rc
56
What if not?
● No dogfooding
○ A silo between QA and developers
○ Developers are pushed to fix the stage
● We should keep stable two environments instead of one
○ Staging should be stable by design
○ The development environment should be stable too
■ If the authorization service doesn’t work -
developer cannot test their branch
57
What if not?
● No dogfooding
○ A silo between QA and developers
○ Developers are pushed to fix the stage
● We should keep stable two environments instead of one
○ Staging should be stable by design
○ The development environment should be stable too
■ If the authorization service doesn’t work -
developer cannot test their branch
58
Chapter 3: Make Some Code
59
Traffic Routing
60
61
Service Injection
x-service-route: payment-service:mp-101
62
Service Injection
x-service-route: payment-service:mp-101
Nginx unpacks cookie to header
Istio Virtual Service
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: payment-service
spec:
...
http:
- name: stable
route:
- destination:
host: payment-service.services.svc.cluster.local
63
Istio Virtual Service
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: payment-service
spec:
...
http:
- name: stable
route:
- destination:
host: payment-service.services.svc.cluster.local
64
Deploy for every stable version
via Helm chart
Route to a Branch
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: payment-service
spec:
...
http:
- name: payment-service-mp-101
match:
- headers:
x-service-route:
regex: ^(payment-service:mp-101.*|.*::payment-service:mp-101.*)$
- name: stable
route:
- destination:
host: payment-service.services.svc.cluster.local 65
We cannot add it with
Helm chart
Virtual Service Merge Operator
---
apiVersion: istiomerger.monime.sl/v1alpha1
kind: VirtualServiceMerge
metadata:
name: payment-service-mp-101
spec:
patch:
http:
- name: payment-service-mp-101
match:
- headers:
x-service-route:
regex: ^(payment-service:mp-101.*|.*::payment-service:mp-101.*)$
target:
name: payment-service
66
Deploy for every branch
via Helm chart
67
Propagation Problem
68
Propagation Problem
x-service-route should be propagated
69
Propagation Problem
x-service-route should be propagated
Tracing is a MUST!
70
Propagation Problem
x-service-route should be propagated
Tracing is a MUST!
x-b3-trace-id in response
71
Tricky Case: Migrations that Break
You want to test
migrations in your branch
72
Tricky Case: Migrations that Break
However, you may
affect Stable Dev
You want to test
migrations in your branch
73
Solution: Migrations that Break
74
Solution: Migrations that Break
We chose this variant
75
Tricky Case: Webhooks
76
Tricky Case: Webhooks
Nobody knows about
your internal
infrastructure
77
Solution #1: Webhooks
We can switch URL
for webhook on the
third-party side
78
Solution #1: Webhooks
We can switch URL
for webhook on the
third-party side
However, we affect
Stable Dev
79
Solution #2: Webhooks
Create advanced mock or Fake
to get rid of
External Service dependency at all
80
Solution #3: Webhooks
Use Smart-Proxy
and some correlation ID
for matching requests
from the external service
81
Solution #3: Webhooks
We chose this approach
Use Smart-Proxy
and some correlation ID
for matching requests
from the external service
Unblocking Async Scenarios
82
83
Async Issues
84
Async Issues
Who should
process a message?
85
Let’s Use the Same Appoach
86
Let’s Use the Same Appoach
Developers can
interfere with one
another
87
Subscription per Branch
Issues to
address
● Static subscription for canary
● Dynamic subscriptions for branches
● Common library
○ context propagation
○ message skip logic
88
Issues to
address
● Static subscription for canary
● Dynamic subscriptions for branches
● Common library
○ context propagation
○ message skip logic
89
90
Service Catalog
91
Service Catalog
Metadata such as
name, team,
domain, resources
92
Service Catalog
On metadata change
the state machine
tries to re-apply
93
Service Catalog
Modules have
unified interface
94
Service Catalog
Modules use Terraform for
resource management
95
Service Catalog
Ot they can also perform
additional tasks such as
auto-filling the Vault
configuration for a service
96
Deployment Process
97
Deployment Process
Developers can change
meta.yml for their service in
Service Catalog repository
98
Deployment Process
New meta data will be applied
99
Deployment Process
The state machine will align
resources with new meta
100
Deployment Process
Application Delivery Pipeline
checks the state
101
Static Subscriptions
Re-run the state
machine
Change the
Pub/Sub module
102
Static Subscriptions
Re-run the state
machine
Change the
Pub/Sub module
some-subscription-rc
some-subscription-qa
Issues to
address
● Static subscription for canary
● Dynamic subscriptions for branches
● Common library
○ context propagation
○ message skip logic
103
104
Dynamic Subscriptions
105
Dynamic Subscriptions
Register on branch
first pipeline
106
Dynamic Subscriptions
Register on branch
first pipeline
Re-apply Pub/Sub
module
107
Dynamic Subscriptions
Register on branch
first pipeline
Re-apply Pub/Sub
module
some-subscription-mp-101
108
Dynamic Subscriptions
Deregister on
branch deletion
109
Dynamic Subscriptions
Deregister on
branch deletion
Re-apply Pub/Sub
module
110
Dynamic Subscriptions
Deregister on
branch deletion
Re-apply Pub/Sub
module
order-subscription-mp-101
111
Deployment Process
Issues to
address
● Static subscription for canary
● Dynamic subscriptions for branches
● Common library
○ context propagation
○ message skip logic
112
113
Common Library
114
Common Library
Skip or Process?
115
Common Library: Decision Maker
It is NOT FOR me
116
Common Library: Decision Maker
It is NOT FOR me It is NOT FOR me
117
Common Library: Decision Maker
It is NOT FOR me It is NOT FOR me
It is FOR me
118
Common Library: Decision Maker
It is NOT FOR me It is NOT FOR me
It is FOR me
?
119
Common Library: Decision Maker
Should be aware of all
other versions
120
Common Library
Skip or Process?
Put it back to the
client context
121
Complex Scenarios Supported
Issues to
Address
● Separated DB for branches
○ the same approach as for subscriptions
122
123
Separated DBs Schema
124
Separated DBs Schema
Issues to
Address
● Separated DB for branches
○ the same approach as for subscriptions
○ the incomplete data
125
Chapter 4: Ephemeral Environments
126
127
Welcome to Real Life
128
Welcome to Ephemeral Environments
Types of
Ephemeral
Environments
● One service branch
● Several services branches
○ under one x-source-route
○ Jira-based
● Custom environments
○ for squad (payment-dev)
○ for domain (warehouse)
129
Types of
Ephemeral
Environments
● One service branch
● Several services branches
○ under one x-source-route
○ Jira-based
● Custom environments
○ for squad (payment-dev)
○ for domain (warehouse)
130
131
Custom Ephemeral Environments
Epilogue: Some Conclusions
132
Benefits
● No silo between Dev and QA
● Low resources consumption
● Environments on-demand
133
Drawbacks
● High cognitive load
● Time investments
● Not-fair isolation
134
@aatarasoff
@aatarasoff
@aatarasoff
Questions?
@aatarasoff
135

More Related Content

Similar to Cocktail of Environments. How to Mix Test and Development Environments and Stay Alive

Similar to Cocktail of Environments. How to Mix Test and Development Environments and Stay Alive (20)

Automated testing with Openshift
Automated testing with OpenshiftAutomated testing with Openshift
Automated testing with Openshift
 
Intro to GitOps with Weave GitOps, Flagger and Linkerd
Intro to GitOps with Weave GitOps, Flagger and LinkerdIntro to GitOps with Weave GitOps, Flagger and Linkerd
Intro to GitOps with Weave GitOps, Flagger and Linkerd
 
Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)Free GitOps Workshop (with Intro to Kubernetes & GitOps)
Free GitOps Workshop (with Intro to Kubernetes & GitOps)
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
 
Deploying at will - SEI
 Deploying at will - SEI Deploying at will - SEI
Deploying at will - SEI
 
Raising ux bar with offline first design
Raising ux bar with offline first designRaising ux bar with offline first design
Raising ux bar with offline first design
 
apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...
apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...
apidays LIVE New York - Navigating the Sea of Javascript Tools to Discover Sc...
 
Building a Small Datacenter
Building a Small DatacenterBuilding a Small Datacenter
Building a Small Datacenter
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
 
Open source: Top issues in the top enterprise packages
Open source: Top issues in the top enterprise packagesOpen source: Top issues in the top enterprise packages
Open source: Top issues in the top enterprise packages
 
Building a Small DC
Building a Small DCBuilding a Small DC
Building a Small DC
 
AgileTW Feat. DevOpsTW: 維運 Kubernetes 的兩三事
AgileTW Feat. DevOpsTW: 維運 Kubernetes 的兩三事AgileTW Feat. DevOpsTW: 維運 Kubernetes 的兩三事
AgileTW Feat. DevOpsTW: 維運 Kubernetes 的兩三事
 
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst ITThings You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
Things You MUST Know Before Deploying OpenStack: Bruno Lago, Catalyst IT
 
Antifragility and testing for distributed systems failure
Antifragility and testing for distributed systems failureAntifragility and testing for distributed systems failure
Antifragility and testing for distributed systems failure
 
Releaseflow: a healthy build and deploy process
Releaseflow: a healthy build and deploy processReleaseflow: a healthy build and deploy process
Releaseflow: a healthy build and deploy process
 
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
 
OpenTelemetry For Architects
OpenTelemetry For ArchitectsOpenTelemetry For Architects
OpenTelemetry For Architects
 
Learnings from the Field. Lessons from Working with Dozens of Small & Large D...
Learnings from the Field. Lessons from Working with Dozens of Small & Large D...Learnings from the Field. Lessons from Working with Dozens of Small & Large D...
Learnings from the Field. Lessons from Working with Dozens of Small & Large D...
 
Netflix Data Pipeline With Kafka
Netflix Data Pipeline With KafkaNetflix Data Pipeline With Kafka
Netflix Data Pipeline With Kafka
 
Netflix Data Pipeline With Kafka
Netflix Data Pipeline With KafkaNetflix Data Pipeline With Kafka
Netflix Data Pipeline With Kafka
 

More from Aleksandr Tarasov

Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с Gradle
Aleksandr Tarasov
 
микроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубымикроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубы
Aleksandr Tarasov
 

More from Aleksandr Tarasov (13)

Service Discovery. More that it seems
Service Discovery. More that it seemsService Discovery. More that it seems
Service Discovery. More that it seems
 
Everything as a code
Everything as a codeEverything as a code
Everything as a code
 
Service Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud InternalsService Discovery. Spring Cloud Internals
Service Discovery. Spring Cloud Internals
 
Continuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons LearnedContinuous Delivery with Jenkins: Lessons Learned
Continuous Delivery with Jenkins: Lessons Learned
 
WILD microSERVICES v2 (JEEConf Edition)
WILD microSERVICES v2 (JEEConf Edition)WILD microSERVICES v2 (JEEConf Edition)
WILD microSERVICES v2 (JEEConf Edition)
 
WILD microSERVICES v2
WILD microSERVICES v2WILD microSERVICES v2
WILD microSERVICES v2
 
Расширь границы возможного вместе с Gradle
Расширь границы возможного вместе с GradleРасширь границы возможного вместе с Gradle
Расширь границы возможного вместе с Gradle
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot Starter
 
Хипстеры в энтерпрайзе
Хипстеры в энтерпрайзеХипстеры в энтерпрайзе
Хипстеры в энтерпрайзе
 
микроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубымикроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубы
 
Joker 2015. WILD microSERVICES
Joker 2015. WILD microSERVICESJoker 2015. WILD microSERVICES
Joker 2015. WILD microSERVICES
 
Docker In the Bank
Docker In the BankDocker In the Bank
Docker In the Bank
 
Docker In Bank Unrated
Docker In Bank UnratedDocker In Bank Unrated
Docker In Bank Unrated
 

Recently uploaded

Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Recently uploaded (20)

WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4j
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 

Cocktail of Environments. How to Mix Test and Development Environments and Stay Alive