SlideShare una empresa de Scribd logo
1 de 29
About me
Oleg Karasik
Technology Lead in ISsoft, Minsk, Belarus
• More than 10 years of software development experience.
• Occasionally contribute to open source.
• I blog at https://olegkarasik.wordpress.com/ and curate a
monthly ‘.NET R&D Digest’ newsletter about .NET.
• Besides blog, you can find me on Twitter: @OlegKarasik1.
What is modern .NET application?
Modern .NET application - is an application with all latest and greatest.
What does «latest and greatest» mean in .NET?
A group of .NET
developers from
development club
What does «latest and greatest» mean in .NET?
What does «latest and greatest» mean in .NET?
What does «latest and greatest» mean in .NET?
.NET 6!
Because .NET Framework is in maintenance
and all new features are made for .NET 6.
What does «latest and greatest» mean in .NET?
MICROSERVICES!
Because I don’t want to work on huge monolith
monolith full of spaghetti code, cargo cults and
cults and all mighty singletons.
What does «latest and greatest» mean in .NET?
CLOUD!
Because Clouds simplify things and allow to
allow to focus on actual development and not
and not reinventing a wheel.
What does «latest and greatest» mean in .NET?
KUBERNETES!
Because Kubernetes provides load balancing, effective
effective hardware utilization, self-healing, secret
management and much more.
What is modern .NET application? (cont.)
Modern .NET application - is an application with all latest and greatest,
which are:
• .NET 5
• Microservices
• Cloud
• Kubernetes
Modern .NET application in imagination
> High load detected. Scaling out...
> No load detect. Scaling in.
> Routing requests
> Outage. Restoring...
> Operational.
> Incoming requests
Cons of modern .NET apps in development (#1)
Complex implementation of service discovery to configure and find
addresses of application services, databases or external services.
Cons of modern .NET apps in development (#2)
High overhead when multiple services are involved in both development
and debugging scenarios.
Cons of modern .NET apps in development (#2.1)
When all services are in separate repositories this leads to …
• … a need to clone, build and start multiple services manually or using
separate scripts;
• … a need to have multiple IDE windows open or need to manually
attach to every required service.
Cons of modern .NET apps in development (#2.2)
When all services are in the same repository this leads to …
• … a need to build all services to debug one service or to have a
separate solutions for each service.
Cons of modern .NET apps in development (#2.3)
When some services can be run only as containers this leads to …
• … a need to manually build / pull and run required images in local
host;
• … a need to keep local configuration in sync with source service
configuration.
Cons of modern .NET apps in development (#3)
An obligation to have and support infrastructure elements such as:
• Dockerfile
• Kubernetes manifest or Helm charts
Come here my
young colleague.
Take this.
Project veteran
Project newbie
What is this?
It is something our ancestors
have created a long before our
time. It is called the Helm
chart. Put it into your project
and it will make himself in a
cloud.
Cons of modern .NET apps in development
(summary)
It is possible to continue the list of concerns.
However, it is obvious – these concerts aren’t critical. They just make
development slower and less fun.
But there is a way around them.
Tye
Project
What is “tye”? (#1)
Tye is a project that is intended to make development, testing, and
deployment of microservices easier.
In development, “tye” helps to build, start and orchestrate execution of
your microservices.
In deployment, “tye” auto-generates container images, pushes them to
container registry and deploys them to Kubernetes cluster using auto-
generated Kubernetes manifest.
What is “tye”? (#1.1)
Tye – is a dotnet tool.
So, all you need to do to get tye is to execute this simple command:
… and in case of deployment, install Docker, Kubernetes command-line
(kubectl), have container registry and have access to Kubernetes
cluster.
dotnet tool install -g Microsoft.Tye --version "…"
Tye commands
Tye exposes the following commands:
• init - create a tye.yaml (discussed later)
• run - run an application locally (for development)
• build - build an application's containers.
• push - push an application's containers.
• deploy - deploy an application (for deployment)
• undeploy - remove a deployed application.
Run, Tye, run!
Dashboard
*.sln
*.csproj
tye.yaml
build
start
build
start
tye run
Information & Monitoring
On start, each service is configured with:
• addresses of other services through
environment variables.
A “build” can be:
• literally building a service from sources or an image from Dockerfile
• pulling container image from container registry
• cloning a git repository and doing one of the above-mentioned things
Deploy, Tye, deploy!
tye deploy command execution is very similar to tye run, except:
• No dashboard.
• All services are normalized to container images (so, if service was
built from sources, now it will be build using autogenerated
Dockerfile) which are pushed to container registry.
• All services receive autogenerated Kubernetes manifests which are
applied to Kubernetes cluster.
How run and deploy commands do these things?
To perform its job tye intensively leverages existing infrastructure and
tooling:
• To build C# or F# project tye uses dotnet cli.
• To build, pull or pushing container images tye uses docker cli.
• To apply Kubernetes manifest to a cluster tye uses kubectl.
• To clone git repository tye uses git.
DEMO
… and tye can do more!
Besides mentioned and demonstrated things tye supports:
• Integration with DAPR
• Azure Functions
• Distributed Tracing
• Elastic Stack
• … and more!
CTRL+C
Oleg Karasik olegkarasik@coherentsolutions.com

Más contenido relacionado

La actualidad más candente

ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5) ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5) WinWire Technologies Inc
 
Building Intelligent Cloud with Microsoft Azure
Building Intelligent Cloud with Microsoft AzureBuilding Intelligent Cloud with Microsoft Azure
Building Intelligent Cloud with Microsoft AzureWinWire Technologies Inc
 
Running containerized application in AWS ECS
Running containerized application in AWS ECSRunning containerized application in AWS ECS
Running containerized application in AWS ECSDevOps Indonesia
 
Centralized configuration with azure app configuration
Centralized configuration with azure app configurationCentralized configuration with azure app configuration
Centralized configuration with azure app configurationCallon Campbell
 
Sergii Bielskyi "Azure Logic App and building modern cloud native apps"
Sergii Bielskyi "Azure Logic App and building modern cloud native apps"Sergii Bielskyi "Azure Logic App and building modern cloud native apps"
Sergii Bielskyi "Azure Logic App and building modern cloud native apps"Fwdays
 
Vue micro frontend implementation patterns
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patternsAlbert Brand
 
Visual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring DevelopersVisual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring DevelopersBruno Borges
 
“ASP.NET Core. Features and architecture”
“ASP.NET Core. Features and architecture” “ASP.NET Core. Features and architecture”
“ASP.NET Core. Features and architecture” HYS Enterprise
 
Magic of web components
Magic of web componentsMagic of web components
Magic of web componentsHYS Enterprise
 
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsBruno Borges
 
Azure kubernetes service
Azure kubernetes serviceAzure kubernetes service
Azure kubernetes serviceVishwas N
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
Testing Microservices
Testing MicroservicesTesting Microservices
Testing MicroservicesAnil Allewar
 
Blazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approachBlazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approachAlex Pshul
 
Durable Azure Functions
Durable Azure FunctionsDurable Azure Functions
Durable Azure FunctionsPushkar Saraf
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONSDotNetCampus
 

La actualidad más candente (20)

Azure ARM Template
Azure ARM TemplateAzure ARM Template
Azure ARM Template
 
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5) ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
ASP.NET Core 1.0: Understanding ASP.NET Core 1.0 (ASP.NET 5)
 
Azure Resource Manager (ARM) Templates
Azure Resource Manager (ARM) TemplatesAzure Resource Manager (ARM) Templates
Azure Resource Manager (ARM) Templates
 
Building Intelligent Cloud with Microsoft Azure
Building Intelligent Cloud with Microsoft AzureBuilding Intelligent Cloud with Microsoft Azure
Building Intelligent Cloud with Microsoft Azure
 
Running containerized application in AWS ECS
Running containerized application in AWS ECSRunning containerized application in AWS ECS
Running containerized application in AWS ECS
 
Centralized configuration with azure app configuration
Centralized configuration with azure app configurationCentralized configuration with azure app configuration
Centralized configuration with azure app configuration
 
Sergii Bielskyi "Azure Logic App and building modern cloud native apps"
Sergii Bielskyi "Azure Logic App and building modern cloud native apps"Sergii Bielskyi "Azure Logic App and building modern cloud native apps"
Sergii Bielskyi "Azure Logic App and building modern cloud native apps"
 
Vue micro frontend implementation patterns
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patterns
 
Visual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring DevelopersVisual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring Developers
 
“ASP.NET Core. Features and architecture”
“ASP.NET Core. Features and architecture” “ASP.NET Core. Features and architecture”
“ASP.NET Core. Features and architecture”
 
Magic of web components
Magic of web componentsMagic of web components
Magic of web components
 
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
 
Spring to Image
Spring to ImageSpring to Image
Spring to Image
 
Azure kubernetes service
Azure kubernetes serviceAzure kubernetes service
Azure kubernetes service
 
.NET Overview & Roadmap
.NET Overview & Roadmap.NET Overview & Roadmap
.NET Overview & Roadmap
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
Testing Microservices
Testing MicroservicesTesting Microservices
Testing Microservices
 
Blazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approachBlazor and Azure Functions - a serverless approach
Blazor and Azure Functions - a serverless approach
 
Durable Azure Functions
Durable Azure FunctionsDurable Azure Functions
Durable Azure Functions
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
 

Similar a "Project Tye to Tie .NET Microservices", Oleg Karasik

Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Ambassador Labs
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Lean IT Consulting
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyAjeet Singh Raina
 
Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT CampusAjeet Singh Raina
 
DevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesDevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesAmbassador Labs
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerAjeet Singh Raina
 
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Daniel Bryant
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationAlex Vranceanu
 
Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?John Rofrano
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...Ambassador Labs
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2Docker, Inc.
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern DesktopOren Novotny
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerSakari Hoisko
 
10 tips for Cloud Native Security
10 tips for Cloud Native Security10 tips for Cloud Native Security
10 tips for Cloud Native SecurityKarthik Gaekwad
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDocker, Inc.
 
Containers and Microservices for Realists
Containers and Microservices for RealistsContainers and Microservices for Realists
Containers and Microservices for RealistsOracle Developers
 

Similar a "Project Tye to Tie .NET Microservices", Oleg Karasik (20)

Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
 
Dotnet on linux
Dotnet on linuxDotnet on linux
Dotnet on linux
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Introduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of TechnologyIntroduction to Docker - Vellore Institute of Technology
Introduction to Docker - Vellore Institute of Technology
 
Introduction to Docker - VIT Campus
Introduction to Docker - VIT CampusIntroduction to Docker - VIT Campus
Introduction to Docker - VIT Campus
 
DevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesDevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for Kubernetes
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using Docker
 
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - Presentation
 
Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday Docker
 
10 tips for Cloud Native Security
10 tips for Cloud Native Security10 tips for Cloud Native Security
10 tips for Cloud Native Security
 
Demystifying Docker101
Demystifying Docker101Demystifying Docker101
Demystifying Docker101
 
Demystifying Docker
Demystifying DockerDemystifying Docker
Demystifying Docker
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
Kubernetes Security
Kubernetes SecurityKubernetes Security
Kubernetes Security
 
Containers and Microservices for Realists
Containers and Microservices for RealistsContainers and Microservices for Realists
Containers and Microservices for Realists
 

Más de Fwdays

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...Fwdays
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...Fwdays
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...Fwdays
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...Fwdays
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...Fwdays
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...Fwdays
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...Fwdays
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...Fwdays
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra MyronovaFwdays
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...Fwdays
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...Fwdays
 

Más de Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Último

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Último (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

"Project Tye to Tie .NET Microservices", Oleg Karasik

  • 1.
  • 2. About me Oleg Karasik Technology Lead in ISsoft, Minsk, Belarus • More than 10 years of software development experience. • Occasionally contribute to open source. • I blog at https://olegkarasik.wordpress.com/ and curate a monthly ‘.NET R&D Digest’ newsletter about .NET. • Besides blog, you can find me on Twitter: @OlegKarasik1.
  • 3. What is modern .NET application? Modern .NET application - is an application with all latest and greatest.
  • 4. What does «latest and greatest» mean in .NET? A group of .NET developers from development club
  • 5. What does «latest and greatest» mean in .NET?
  • 6. What does «latest and greatest» mean in .NET?
  • 7. What does «latest and greatest» mean in .NET? .NET 6! Because .NET Framework is in maintenance and all new features are made for .NET 6.
  • 8. What does «latest and greatest» mean in .NET? MICROSERVICES! Because I don’t want to work on huge monolith monolith full of spaghetti code, cargo cults and cults and all mighty singletons.
  • 9. What does «latest and greatest» mean in .NET? CLOUD! Because Clouds simplify things and allow to allow to focus on actual development and not and not reinventing a wheel.
  • 10. What does «latest and greatest» mean in .NET? KUBERNETES! Because Kubernetes provides load balancing, effective effective hardware utilization, self-healing, secret management and much more.
  • 11. What is modern .NET application? (cont.) Modern .NET application - is an application with all latest and greatest, which are: • .NET 5 • Microservices • Cloud • Kubernetes
  • 12. Modern .NET application in imagination > High load detected. Scaling out... > No load detect. Scaling in. > Routing requests > Outage. Restoring... > Operational. > Incoming requests
  • 13. Cons of modern .NET apps in development (#1) Complex implementation of service discovery to configure and find addresses of application services, databases or external services.
  • 14. Cons of modern .NET apps in development (#2) High overhead when multiple services are involved in both development and debugging scenarios.
  • 15. Cons of modern .NET apps in development (#2.1) When all services are in separate repositories this leads to … • … a need to clone, build and start multiple services manually or using separate scripts; • … a need to have multiple IDE windows open or need to manually attach to every required service.
  • 16. Cons of modern .NET apps in development (#2.2) When all services are in the same repository this leads to … • … a need to build all services to debug one service or to have a separate solutions for each service.
  • 17. Cons of modern .NET apps in development (#2.3) When some services can be run only as containers this leads to … • … a need to manually build / pull and run required images in local host; • … a need to keep local configuration in sync with source service configuration.
  • 18. Cons of modern .NET apps in development (#3) An obligation to have and support infrastructure elements such as: • Dockerfile • Kubernetes manifest or Helm charts Come here my young colleague. Take this. Project veteran Project newbie What is this? It is something our ancestors have created a long before our time. It is called the Helm chart. Put it into your project and it will make himself in a cloud.
  • 19. Cons of modern .NET apps in development (summary) It is possible to continue the list of concerns. However, it is obvious – these concerts aren’t critical. They just make development slower and less fun. But there is a way around them.
  • 21. What is “tye”? (#1) Tye is a project that is intended to make development, testing, and deployment of microservices easier. In development, “tye” helps to build, start and orchestrate execution of your microservices. In deployment, “tye” auto-generates container images, pushes them to container registry and deploys them to Kubernetes cluster using auto- generated Kubernetes manifest.
  • 22. What is “tye”? (#1.1) Tye – is a dotnet tool. So, all you need to do to get tye is to execute this simple command: … and in case of deployment, install Docker, Kubernetes command-line (kubectl), have container registry and have access to Kubernetes cluster. dotnet tool install -g Microsoft.Tye --version "…"
  • 23. Tye commands Tye exposes the following commands: • init - create a tye.yaml (discussed later) • run - run an application locally (for development) • build - build an application's containers. • push - push an application's containers. • deploy - deploy an application (for deployment) • undeploy - remove a deployed application.
  • 24. Run, Tye, run! Dashboard *.sln *.csproj tye.yaml build start build start tye run Information & Monitoring On start, each service is configured with: • addresses of other services through environment variables. A “build” can be: • literally building a service from sources or an image from Dockerfile • pulling container image from container registry • cloning a git repository and doing one of the above-mentioned things
  • 25. Deploy, Tye, deploy! tye deploy command execution is very similar to tye run, except: • No dashboard. • All services are normalized to container images (so, if service was built from sources, now it will be build using autogenerated Dockerfile) which are pushed to container registry. • All services receive autogenerated Kubernetes manifests which are applied to Kubernetes cluster.
  • 26. How run and deploy commands do these things? To perform its job tye intensively leverages existing infrastructure and tooling: • To build C# or F# project tye uses dotnet cli. • To build, pull or pushing container images tye uses docker cli. • To apply Kubernetes manifest to a cluster tye uses kubectl. • To clone git repository tye uses git.
  • 27. DEMO
  • 28. … and tye can do more! Besides mentioned and demonstrated things tye supports: • Integration with DAPR • Azure Functions • Distributed Tracing • Elastic Stack • … and more!

Notas del editor

  1. (следующий слайд)
  2. Здравствуйте, меня зовут Олег и я разработчик *щелк* :) За более чем 10 лет я работал на разных проектах, от больших до маленьких, но почти все они в той или иной степени были связаны с веб-разработкой на .NET. Помимо основной работы, я периодически вношу свой небольшой вклад в open source и веду блог, где каждый месяц публикую подборку о .NET и не только. *пауза* Теперь, когда мы немного познакомились, я бы хотел поговорить о современных .NET приложениях. (следующий слайд)
  3. Какое приложение на .NET можно назвать «современным»? *короткая пауза* Немного шутя, можно ответить, *щелк* что это «приложение в котором все самое-самое». Но что входит в это «самое-самое»? (следующий слайд)
  4. Никто не может знать ответ на этот вопрос лучше чем сами разработчики. Поэтому я пригласил сюда нескольких ребята из клуба разработчиков и попросил их поделится своим мнением. (следующий слайд)
  5. (анимация)
  6. (конец анимации)
  7. .NET 6. *короткая пауза* Полностью согласен. Сейчас, когда .NET Framework находится в стадии поддержки, а все силы разработчиков направлены на .NET 6. Это без сомнения попадает в категорию «самое-самое». (следующий слайд)
  8. Микросервисы. *короткая пауза* Конечно. Наверное никто не хочет работать над огромным монолитом состоящим из спагетти кода, singletons и прочих прелестей беспорядочной разработки. (следующий слайд)
  9. Облака. *краткая пауза* Сейчас без этого никуда. Использование облачных технологий на самом деле значительно упрощают разработку и позволяют сконцентрироваться на решении проблем, вместо изобретения очередного колеса. (следующий слайд)
  10. Kubernetes. *короткая пауза* Хороший выбор. Особенно учитывая, что использование Kubernetes означает использование контейнеров, а это несомненно является частью того «самого-самого». (следующий слайд)
  11. Полученный список выглядит интригующе. *пауза* Смотря на него, можно представить… *пауза* (следующий слайд)
  12. Высоконагруженную систему, обслуживающую тысячи *короткая пауза* и тысячи запросов в секунду. *пауза* Систему, которая самостоятельно масштабируется *короткая пауза* и восстанавливается в случае ошибок. *пауза* Завораживающее. Однако в этой идеальной картинке, кое-чего не хватает, а если быть точным, не хватает там сложностей связанных с разработкой таких приложений. (следующий слайд)
  13. И первое, что приходит на ум это настройка связи между сервисами в приложении. Когда представляешь микросервисы, они как правило уже общаются между собой, но ведь это общение необходимо организовать. В development это как правило реализуется *щелк* через перечисления URL и connection string прямо в конфигурационном файле каждого сервиса. Наличие такой конфигурации вынуждает разработчиков *щелк* следить за адресами и пересечение портов. И в это нет ничего страшного пока это два сервиса. Однако когда таких сервисов становится 5? 10? 20? Но ведь это еще не все. Теперь нам нужно поддерживать конфигурацию в других *щелк* environment. И не важно, будет это именно в конфигурационных файлах или *щелк* в коде. Нам необходимо это делать. Нам необходимо за этим заниматься. (следующий слайд)
  14. Но это только начало. Помимо этого, в микросервисных приложениях полно сложностей связанных непосредственно с процессом написание и отладки кода. (следующий слайд)
  15. В частности, если код наших сервисов находится в разных репозиториях это приводит к необходимости скачивать и обновлять каждый репозиторий в отдельности. Затем, сервисы из этих репозиториев необходимо по отдельности собрать и запустить. И так каждый раз, *пауза* при каждом обновлении. Очень часто это приводит к тому, что у нас открыто по 10 студий, мы постоянно перепрыгиваем между ними, останавливаем отладку не того сервиса, а иногда даже собираем не тот сервис. (следующий слайд)
  16. И если говорить откровенно, ситуация не становится легче если весь код размещается в одном репозитории. Ведь теперь, если мы используем один solution, нам чтобы собрать один сервис, необходимо руками выбрать нужный проект, либо же собрать все. Или мы можем написать скрипты и сделать отдельные solution для каждого сервиса, что по сути возвращает нас к уже описанным проблемам и 10 окнам студии. (следующий слайд)
  17. А теперь представьте, что часть этих сервисов вообще может быть запущена только в виде контейнера. Или еще лучше, что например часть сервисов которые вам нужны распространяются как контейнеры. В этом случае, ко всему выше перечисленному, нам придется еще собирать и обновлять images этих контейнеров, запускать их локально, причем так, чтобы они не конфликтовали с другими сервисами. (следующий слайд)
  18. Но и это еще не все. Ведь помимо самого кода, нам необходимо поддерживать такие инфраструктурных элементы как Dockerfile и Kubernetes manifest. Причем в каждом сервисе. *пауза* И да, это именно необходимость. Ведь если мы говорим о микросервисах, то зачастую эти элементы не содержат никакой «хитрой» логики, а являются типовыми и шаблонными. *пауза* При этом обращение с ними часто приобретает прямо ритуальный характер *щелк*. По моему опыту это достаточно распространённый случай, когда однажды созданный кем-то Helm chart копируют от сервиса к сервису как черный ящик. При этом, никто уже и не знает, что там внутри. И это работает. *пауза* И работает именно потому, что там нет и никогда не было никакой «хитрой логики». И на самом деле типовой helm chart, как и Dockerfile может быть легко сгенерирован машиной. (следующий слайд)
  19. При желании, этот список сложностей можно продолжать. *щелк* Однако, все ровно понятно, что со всеми этими сложностями можно «мирится» иначе таких проектов просто бы не было. *щелк* Но сегодня, я хочу вам рассказать и показать, что все это можно обойти. (следующий слайд)
  20. И сделать это нам поможет проект tye. (следующий слайд)
  21. Проект tye призван облегчить разработку микросервисных приложений. *щелк* С точки зрения разработки, tye упрощает сборку, запуск и администрирование микро-сервисов. *щелк* С точки зрения развертки, tye автоматически генерирует Dockerfile, загружает image в container registry и разворачивает их на Kubernetes кластере при помощи автоматически сгенерированного Kubernetes manifest. (следующий слайд)
  22. Физически же, tye представляет собой dotnet tool. *пауза* Вот так просто. *щелк* И поэтому, все что нужно сделать, чтобы получить tye в свое распоряжение это установить его одной командой. *пауза* *щелк* а потом, если вы планируете заниматься разверткой, то еще установить Docker, Kubernetes, развернуть container registry. Хотя если вы работаете или собираетесь работать с микросервисами, то перечисленные инструменты и так должны присутствовать на вашей рабочей станции. (следующий слайд)
  23. После установке, tye предоставляет нам целый набор команд. Мы не будем рассматривать их все а остановимся только на двух из них - run и deploy, поскольку именно они делают основную работу. (следующий слайд)
  24. Начнем с команды run. Основным параметром этой команды является путь к tye,yaml (о котором мы поговорим позже), *.sln или проектному файлу. Как только tye обнаруживает свою цель, *щелк* он сканирует её на наличие сервисов. *щелк* Затем, выполняет сборку каждого сервиса. *щелк* После чего запускает их на выполнение. *щелк* Параллельно с этим, tye запускает так называемый dashboard – небольшое веб-приложение позволяющее получить информацию о запущенных сервисах. Важно отметить что: *щелк* «сборка» сервиса на самом деле может представлять собой как в прямом смысле сборку исполняемого файла из исходных кодов, сборку image из Dockerfile, загрузку image из container registry или даже клонирование git репозитория и повторением в нем процесса сборки. *щелк* во время запуска, каждый сервис при через переменные окружения получает информацию об адресах остальных сервисов, таким образом, нам нет необходимости самостоятельно настраивать общение между сервисами. (следующий слайд)
  25. При выполнении команды deploy описанный цикл практически полностью повторяется за исключением следующего: *щелк* Не запускается dashboard. *щелк* Все сервисы собираются в image, поэтому если сервис собирался из исходников, то теперь он будет собран при помощи автоматически сгенерированного Dockerfile. После сборки, все эти images загружаются в container registry. *щелк* Все сервисы получают автоматически сгенерированные Kubernetes манифесты, которые применяются на Kubernetes кластере. (следующий слайд)
  26. Под капотом, при выполнение run & deploy команд, tye использует существующие инструменты. *щелк* Так, сборка .NET проектов выполняется с помощью dotnet cli. *щелк* Сборка и загрузка container images – при помощь docker cli. *щелк* Процедура развертки в Kubernetes кластер – при помощи kubernetes cli, *щелк* а клонирование репозиториев при помощи git. Использование существующих инструментов позволяет нам, как пользователям tye выполнить настройку всех эти инструментов не взаимодействуя с tye, не подстраиваясь под него и не боясь, что он каким-либо образом вмешается в это. (следующий слайд)
  27. Ну, а теперь, когда мы прошлись по основным моментам, я предлагаю перейти от слов к делу и познакомится с tye поближе. (следующий слайд)
  28. Помимо всего что мне удалось рассказать и показать, tye поддерживает: *щелк* новейший DAPR runtime. *щелк* Azure Functions. *щелк* Distributed Tracing. *щелк* Elastic Stack. *щелк* и многое другое. И что важно, все это обходится минимальным вмешательством в код наших проектов и просто работает от одной команды - tye run. (следующий слайд)
  29. Спасибо за внимание! И обязательно попробуйте tye! (конце презентации)