We all like building and deploying cloud applications. But what happens once that’s done? How do we know if our application behaves like we expect it to behave? Of course, logging! But how do we get that data off of our machines? How do we sift through a bunch of seemingly meaningless diagnostics? In this session, we’ll look at how we can keep track of our Azure application using structured logging, AppInsights and AppInsights analytics to make all that data more meaningful.
ConFoo - Exploring .NET’s memory management – a trip down memory laneMaarten Balliauw
The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
Many organizations are embracing the latest practices for DevOps agility and cloud innovations to manage their heterogeneous environments (Hybrid DC). Yet they are also concerned about their ability to make appropriate and responsible decisions about how to monitor those workloads. How to monitor application and infrastructure in a centralized location?
ConFoo - Exploring .NET’s memory management – a trip down memory laneMaarten Balliauw
The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
Many organizations are embracing the latest practices for DevOps agility and cloud innovations to manage their heterogeneous environments (Hybrid DC). Yet they are also concerned about their ability to make appropriate and responsible decisions about how to monitor those workloads. How to monitor application and infrastructure in a centralized location?
Lets talk about: Azure Kubernetes Service (AKS)Pedro Sousa
Let's talk about the Azure Kubernetes Service (AKS), starting off by some background on the container's evolution through time up to the new management features provided by Azure like Azure ARC for Kubernetes. Key differences of Azure Kubernetes Service, Azure Container Instances, Web App for Containers and Containers on Azure Service Fabric.
Organizations focus process optimization of
Data Tier
Application Tier
Presentation Tier is usually ignored.
Presentation Tier is responsible for more than 30% of Client/Server application performance.
Best practices with Microsoft Graph: Making your applications more performant...Microsoft Tech Community
Learn how to take advantage of APIs, platform capabilities and intelligence from Microsoft Graph to make your app more performant, more resilient and more reliable
Debugging and Interacting with Production Applications - MS Online Tech ForumDavide Benvegnù
[SLIDE FROM MICROSOFT ONLINE TECH FORUM SESSION]
Now that the applications are in the Cloud, developers must find ways to debug and interact with the production applications with minimal impact and maximal efficiency.
Azure comes with a full set of tools and utilities that can be used to manage and monitor your applications.
In this session, see how streaming logs work to monitor the production application in real time. We also show how Snapshot Debugging can be used to live debug applications.
Serverless Logic Tier The logic tier of the three-tier architecture represents the brains of the application. This is why integrating Amazon API Gateway and AWS Lambda to
form your logic tier can be so revolutionary.
In this session, we will take a deep-dive into the DevOps process that comes with Azure Machine Learning service, a cloud service that you can use to track as you build, train, deploy and manage models. We zoom into how the data science process can be made traceable and deploy the model with Azure DevOps to a Kubernetes cluster.
At the end of this session, you will have a good grasp of the technological building blocks of Azure machine learning services and can bring a machine learning project safely into production.
Learn how to deploy your containers without managing infrastructure. Test and deploy workloads faster with Azure Container Instances (ACI).
We will map out the features of ACI and when/how to use it with other Container toolchains and orchestrators like kubernetes. The session will have a few hands-on quick demos on various deployment scenarios.
Video here: https://youtu.be/tn-BEhhFO1M
Introduction to Azure Functions.
An event-based serverless compute experience to accelerate your development. Scale based on demand and pay only for the resources you consume.
Presentation showing Microsoft Azure Functions, the new serverless compute platform solution.
For blog entry see http://martinabbott.azurewebsites.net/2016/06/11/fun-with-azure-functions-and-the-emotion-api/
For repository see https://github.com/martinabbott/functions-emotion-api
Improve monitoring and observability for kubernetes with oss toolsNilesh Gule
Slide deck from the Azure Community Conference (https://azconf.dev/) presented on 29th October 2021. The session covered following topics
- Need for centralized logging
- Using ElasticSearch, Fluentd and Kibana (EFK) with Kubernetes
- Need for monitoring
- Using Prometheus & Grafana for infrastructure, application and third party services
- Integration of application with Sentry for Exception aggregation
What is going on? Application Diagnostics on Azure - Copenhagen .NET User GroupMaarten Balliauw
We all like building and deploying cloud applications. But what happens once that’s done? How do we know if our application behaves like we expect it to behave? Of course, logging! But how do we get that data off of our machines? How do we sift through a bunch of seemingly meaningless diagnostics? In this session, we’ll look at how we can keep track of our Azure application using structured logging, AppInsights and AppInsights analytics to make all that data more meaningful.
Measure anything, measure everything.
Effortless monitoring with Statsd, Collectd and Graphite can increase software development productivity and quality at the same time.
Lets talk about: Azure Kubernetes Service (AKS)Pedro Sousa
Let's talk about the Azure Kubernetes Service (AKS), starting off by some background on the container's evolution through time up to the new management features provided by Azure like Azure ARC for Kubernetes. Key differences of Azure Kubernetes Service, Azure Container Instances, Web App for Containers and Containers on Azure Service Fabric.
Organizations focus process optimization of
Data Tier
Application Tier
Presentation Tier is usually ignored.
Presentation Tier is responsible for more than 30% of Client/Server application performance.
Best practices with Microsoft Graph: Making your applications more performant...Microsoft Tech Community
Learn how to take advantage of APIs, platform capabilities and intelligence from Microsoft Graph to make your app more performant, more resilient and more reliable
Debugging and Interacting with Production Applications - MS Online Tech ForumDavide Benvegnù
[SLIDE FROM MICROSOFT ONLINE TECH FORUM SESSION]
Now that the applications are in the Cloud, developers must find ways to debug and interact with the production applications with minimal impact and maximal efficiency.
Azure comes with a full set of tools and utilities that can be used to manage and monitor your applications.
In this session, see how streaming logs work to monitor the production application in real time. We also show how Snapshot Debugging can be used to live debug applications.
Serverless Logic Tier The logic tier of the three-tier architecture represents the brains of the application. This is why integrating Amazon API Gateway and AWS Lambda to
form your logic tier can be so revolutionary.
In this session, we will take a deep-dive into the DevOps process that comes with Azure Machine Learning service, a cloud service that you can use to track as you build, train, deploy and manage models. We zoom into how the data science process can be made traceable and deploy the model with Azure DevOps to a Kubernetes cluster.
At the end of this session, you will have a good grasp of the technological building blocks of Azure machine learning services and can bring a machine learning project safely into production.
Learn how to deploy your containers without managing infrastructure. Test and deploy workloads faster with Azure Container Instances (ACI).
We will map out the features of ACI and when/how to use it with other Container toolchains and orchestrators like kubernetes. The session will have a few hands-on quick demos on various deployment scenarios.
Video here: https://youtu.be/tn-BEhhFO1M
Introduction to Azure Functions.
An event-based serverless compute experience to accelerate your development. Scale based on demand and pay only for the resources you consume.
Presentation showing Microsoft Azure Functions, the new serverless compute platform solution.
For blog entry see http://martinabbott.azurewebsites.net/2016/06/11/fun-with-azure-functions-and-the-emotion-api/
For repository see https://github.com/martinabbott/functions-emotion-api
Improve monitoring and observability for kubernetes with oss toolsNilesh Gule
Slide deck from the Azure Community Conference (https://azconf.dev/) presented on 29th October 2021. The session covered following topics
- Need for centralized logging
- Using ElasticSearch, Fluentd and Kibana (EFK) with Kubernetes
- Need for monitoring
- Using Prometheus & Grafana for infrastructure, application and third party services
- Integration of application with Sentry for Exception aggregation
What is going on? Application Diagnostics on Azure - Copenhagen .NET User GroupMaarten Balliauw
We all like building and deploying cloud applications. But what happens once that’s done? How do we know if our application behaves like we expect it to behave? Of course, logging! But how do we get that data off of our machines? How do we sift through a bunch of seemingly meaningless diagnostics? In this session, we’ll look at how we can keep track of our Azure application using structured logging, AppInsights and AppInsights analytics to make all that data more meaningful.
Measure anything, measure everything.
Effortless monitoring with Statsd, Collectd and Graphite can increase software development productivity and quality at the same time.
Observability foundations in dynamically evolving architecturesBoyan Dimitrov
Holistic application health monitoring, request tracing across distributed systems, instrumentation, business process SLAs - all of them are integral parts of today’s technical stacks. Nevertheless many teams decide to integrate observability last which makes it an almost impossible challenge - especially if you have to deal with hundreds and thousands of services. Therefore starting early is essential and in this talk we are going to see how we can solve those challenges early and explore the foundations of building and evolving complex microservices platforms in respect to observability.
We are going to share some of the best practices and quick wins that allow us to correlate different telemetry systems and gradually build up towards more sophisticated use-cases.
We are also going to look at some of the standard AWS services such as X-Ray and Cloudwatch that help us get going "for free" and then discuss more complex tooling and integrations building up towards a fully integrated ecosystem. As part of this talk we are also going to share some of the learnings we have made at Sixt on this topic and we are going to introduce some of the solutions that help us operate our microservices stack
Strata 2016 - Architecting for Change: LinkedIn's new data ecosystemShirshanka Das
Shirshanka Das and Yael Garten describe how LinkedIn redesigned its data analytics ecosystem in the face of a significant product rewrite, covering the infrastructure changes that enable LinkedIn to roll out future product innovations with minimal downstream impact. Shirshanka and Yael explore the motivations and the building blocks for this reimagined data analytics ecosystem, the technical details of LinkedIn’s new client-side tracking infrastructure, its unified reporting platform, and its data virtualization layer on top of Hadoop and share lessons learned from data producers and consumers that are participating in this governance model. Along the way, they offer some anecdotal evidence during the rollout that validated some of their decisions and are also shaping the future roadmap of these efforts.
Architecting for change: LinkedIn's new data ecosystemYael Garten
2016 StrataHadoop NYC conference talk.
http://conferences.oreilly.com/strata/hadoop-big-data-ny/public/schedule/detail/52182
Abstract:
Last year, LinkedIn embarked on an ambitious mission to completely revamp the mobile experience for its members. This would mean a completely new mobile application, reimagined user experiences, and new interaction concepts. As the team evaluated the impact of this big rewrite on the data analytics ecosystem, they observed a few problems.
Over the past few years, LinkedIn has become extremely good at incrementally changing the site one mini-feature at a time, often in conjunction with hundreds of other incremental changes. LinkedIn’s experimentation platform ensures that it is always monitoring a wide gamut of impacted metrics with every change before rolling fully forward. However, when it comes to rolling out a big change like this, different challenges crop up. You have to rollout the entire application all at once; the new experience means that you have no baseline on new metrics; and existing metrics may see double digit changes just because of the new experience or because the metric’s logic is no longer accurate—the challenge is in figuring out which is which.
Shirshanka Das and Yael Garten describe how LinkedIn redesigned its data analytics ecosystem in the face of a significant product rewrite, covering the infrastructure changes that enable LinkedIn to roll out future product innovations with minimal downstream impact. Shirshanka and Yael explore the motivations and the building blocks for this reimagined data analytics ecosystem, the technical details of LinkedIn’s new client-side tracking infrastructure, its unified reporting platform, and its data virtualization layer on top of Hadoop and share lessons learned from data producers and consumers that are participating in this governance model. Along the way, they offer some anecdotal evidence during the rollout that validated some of their decisions and are also shaping the future roadmap of these efforts.
The new Process Events Monitoring feature set makes it possible for the first time to import process data into Optimize from a range of external sources and carry out monitoring, reporting, and continuous improvement for end-to-end processes even in cases where the entire process isn’t yet automated by Camunda BPM.
Enhancement in Optimize 3.0 include:
- New capabilities for efficient End-To-End Monitoring and Reporting
- New User Task Reporting and Monitoring capabilities which allow you to analyse performance trends for your user tasks
- New Flexible Alerting capabilities which allow you to send Alerts to any system of your choice
- New Dashboarding capabilities which simplify creating and modifying dashboards to a large extend
- Support for Elasticsearch 7
These new capabilities expand the scope of Optimize from a process analytics platform that’s entirely Camunda-centric to one that enables you to visualize, monitor, and improve processes anywhere in your organization–even the processes you haven’t yet gotten around to fully automating with Camunda.
In this webinar, Optimize Product Manager Felix Müller will be joined by Camunda Optimize Tech Lead Sebastian Bathke to share more on Process Events Monitoring and to show you step-by-step how to start using it.
Sherlock Homepage - A detective story about running large web services - WebN...Maarten Balliauw
The site was slow. CPU and memory usage everywhere! Some dead objects in the corner. Something terrible must have happened! We have some IIS logs. Some traces from a witness. But not enough to find out what was wrong. In this session, we’ll see how effective telemetry, a profiler or two as well as a refresher of how IIS runs our ASP.NET web applications can help solve this server murder mystery.
Building an Observability Platform in 389 Difficult StepsDigitalOcean
Watch this Tech Talk: https://do.co/video_dworth
Dave Worth, Engineering Manager at Strava, lays out a strategy for choosing the right tech stack depending on your business and team need. Watch as he guides you through tool sets that navigate around business constraints and regulatory concerns.
About the Presenter
Dave Worth’s professional life consists of being a web and backend engineer who developed specialization in observability through building reliable distributed systems at Strava, and previously DigitalOcean. In his spare time, Dave loves cycling, jiu jitsu, and searching for another great math book to only read the first 50 pages of.
New to DigitalOcean? Get US $100 in credit when you sign up: https://do.co/deploytoday
To learn more about DigitalOcean: https://www.digitalocean.com/
Follow us on Twitter: https://twitter.com/digitalocean
Like us on Facebook: https://www.facebook.com/DigitalOcean
Follow us on Instagram: https://www.instagram.com/thedigitalocean/
We're hiring: http://do.co/careers
Scaling Experimentation & Data Capture at GrabRoman
This is the slides from the presentation I gave at the Data Science Meetup Hamburg. This talks about how we build and scaled our online experimentation platform and associated event capture system.
Apache Ignite is a high-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time. But, did you know it provides streaming and complex event processing (CEP)? In this hands-on demonstration we will take Apache Ignite’s Streaming and CEP features for a test drive. We will start with an example streaming use case then demonstrate how to implement each component in Apache Ignite. Finally we will show how to connect a dashboard application to Apache Ignite to display the results.
Bringing nullability into existing code - dammit is not the answer.pptxMaarten Balliauw
The C# nullability features help you minimize the likelihood of encountering that dreaded System.NullReferenceException. Nullability syntax and annotations give hints as to whether a type can be nullable or not, and better static analysis is available to catch unhandled nulls while developing your code. What's not to like?
Introducing explicit nullability into an existing code bases is a Herculean effort. There's much more to it than just sprinkling some `?` and `!` throughout your code. It's not a silver bullet either: you'll still need to check non-nullable variables for null.
In this talk, we'll see some techniques and approaches that worked for me, and explore how you can migrate an existing code base to use the full potential of C# nullability.
Nerd sniping myself into a rabbit hole... Streaming online audio to a Sonos s...Maarten Balliauw
After buying a set of Sonos-compatible speakers at IKEA, I was disappointed there's no support for playing audio from a popular video streaming service. They stream Internet radio, podcasts and what not. Well, not that service I want it to play!
Determined - and not knowing how deep the rabbit hole would be - I ventured on a trip that included network sniffing on my access point, learning about UPnP and running a web server on my phone (without knowing how to write anything Android), learning how MP4 audio is packaged (and has to be re-packaged). This ultimately resulted in an Android app for personal use, which does what I initially wanted: play audio from that popular video streaming service on Sonos.
Join me for this story about an adventure that has no practical use, probably violates Terms of Service, but was fun to build!
Building a friendly .NET SDK to connect to SpaceMaarten Balliauw
Space is a team tool that integrates chats, meetings, git hosting, automation, and more. It has an HTTP API to integrate third party apps and workflows, but it's massive! And slightly opinionated.
In this session, we will see how we built the .NET SDK for Space, and how we make that massive API more digestible. We will see how we used code generation, and incrementally made the API feel more like a real .NET SDK.
Microservices for building an IDE - The innards of JetBrains Rider - NDC Oslo...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider. We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices.
Indexing and searching NuGet.org with Azure Functions and Search - .NET fwday...Maarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider.
We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!
JetBrains Australia 2019 - Exploring .NET’s memory management – a trip down m...Maarten Balliauw
The .NET Garbage Collector (GC) helps provide our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Can we do without allocations? Are strings evil? It still matters to understand when and where memory is allocated.
In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
.NET Conf 2019 - Indexing and searching NuGet.org with Azure Functions and Se...Maarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
https://blog.maartenballiauw.be/post/2019/07/30/indexing-searching-nuget-with-azure-functions-and-search.html
CloudBurst 2019 - Indexing and searching NuGet.org with Azure Functions and S...Maarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
NDC Oslo 2019 - Indexing and searching NuGet.org with Azure Functions and SearchMaarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
Approaches for application request throttling - Cloud Developer Days PolandMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
Indexing and searching NuGet.org with Azure Functions and Search - Cloud Deve...Maarten Balliauw
Which NuGet package was that type in again? In this session, let's build a "reverse package search" that helps finding the correct NuGet package based on a public type.
Together, we will create a highly-scalable serverless search engine using Azure Functions and Azure Search that performs 3 tasks: listening for new packages on NuGet.org (using a custom binding), indexing packages in a distributed way, and exposing an API that accepts queries and gives our clients the best result.
Approaches for application request throttling - dotNetCologneMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
CodeStock - Exploring .NET memory management - a trip down memory laneMaarten Balliauw
The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider. We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!
ConFoo Montreal - Approaches for application request throttlingMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider. We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...Maarten Balliauw
The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!
VISUG - Approaches for application request throttlingMaarten Balliauw
Speaking from experience building a SaaS: users are insane. If you are lucky, they use your service, but in reality, they probably abuse. Crazy usage patterns resulting in more requests than expected, request bursts when users come back to the office after the weekend, and more! These all pose a potential threat to the health of our web application and may impact other users or the service as a whole. Ideally, we can apply some filtering at the front door: limit the number of requests over a given timespan, limiting bandwidth, ...
In this talk, we’ll explore the simple yet complex realm of rate limiting. We’ll go over how to decide on which resources to limit, what the limits should be and where to enforce these limits – in our app, on the server, using a reverse proxy like Nginx or even an external service like CloudFlare or Azure API management. The takeaway? Know when and where to enforce rate limits so you can have both a happy application as well as happy customers.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
7. Log files suck.
Just stupid string data
Typical log file has no “context”
Typical log file has no correlation
Log files do not measure CPU, memory, I/O, ...
How to get data off our machines?
How to report/analyze?
8. Log files suck.
Just stupid string data
Typical log file has no “context”
Typical log file has no correlation
Log files do not measure CPU, memory, I/O, ...
How to get data off our machines?
How to report/analyze?
Semantic Logging
(e.g. ETW, Serilog, ...)
9. Log files suck.
Just stupid string data
Typical log file has no “context”
Typical log file has no correlation
Log files do not measure CPU, memory, I/O, ...
How to get data off our machines?
How to report/analyze?
Windows Server tooling,
NewRelic, PRTG, SNMP, ...
10. Log files suck.
Just stupid string data
Typical log file has no “context”
Typical log file has no correlation
Log files do not measure CPU, memory, I/O, ...
How to get data off our machines?
How to report/analyze?
Vendor tooling, NewRelic, PRTG,
SNMP, ...
11. Log files suck.
Just stupid string data
Typical log file has no “context”
Typical log file has no correlation
Log files do not measure CPU, memory, I/O, ...
How to get data off our machines?
How to report/analyze? Splunk, LogStash, Kibana, ...
12. Analytics suck!
Either use vendor tooling
What with x-plat deployments?
Either build it ourselves
Lots of components, management overhead, ...
All we wanted was logging and correlation...
15. Application Insights
Azure Service + Library/SDK
Solves “where to store”, “how to ship”, “how to analyze”
Enriches data with telemetry
Correlates data (e.g. client + server + dependency/DB/...)
Allows structured logging
Allows rich querying, alerting
Works for many, many platforms and languages
Web, Windows, Xamarin, any application type really
.NET, Java, JavaScript, Objective-C, PHP, Python, Ruby, ...
Docker (host and container)
18. Do I have to run on Azure?
REST API to send data to
Various tools and SDK’s to collect data specific to language/platform
https://docs.microsoft.com/en-us/azure/application-insights/app-insights-platforms
docker run -v
/var/run/docker.sock:/docker.sock -d
microsoft/applicationinsights
ikey=000000-1111-2222-3333-444444444
IIS Docker host and containers
26. Better tracing
Don’t do stupid strings.
System.Diagnostics.Trace is nice, but also not nice.
Do semantic logging!
Serilog, .NET Core logging have an Application Insights sink
All else: write a sink or log directly to TelemetryClient.Current
28. Events and Metrics
Send custom events and metrics
Name of event/metric + a value
Events – help find how the application is used and can be optimized
User resized column in a grid
User logged in
User clicked “Share”
...
Metrics – help measuring quantifyable data
# Items in shopping cart
...
32. Snapshots! (MiniDump)
NuGet package
MinidumpUploader.exe
separate process which monitors snapshot requests
SnapshotHolder_x64.exe
creates a shadow process in 10-20ms, captures the minidump, returns it to
MinidumpUploader.exe
https://docs.microsoft.com/en-us/azure/application-insights/app-insights-
snapshot-debugger
33. Enriching telemetry
Why?
Enriching telemetry – adding properties to all data
Obfuscating telemetry – GDPR, sensitive data, ...
How?
Directly adding data on TelemetryClient.Current
Using the telemetry pipeline (middlewares on sending data to AI service)
https://blog.maartenballiauw.be/post/2017/01/31/application-insights-telemetry-processors.html
36. Application Insights Analytics
Former MS-internal tool “Kusto”
Near-realtime log ingestion and analysis
Lets you run custom queries
requests
| where timestamp > ago(24h)
| summarize count() by client_CountryOrRegion
| top 10 by count_
| render piechart
37. Queries over logs!
Input dataset
traces
customEvents
pageViews
requests
dependencies
exceptions
availabilityResults
customMetrics
performanceCounters
browserTimings
| Operators
where
count
project
join
limit
order
| Renderer
table
chart (bar, pie, time, area, scatter)
https://docs.microsoft.com/en-us/azure/application-insights/app-insights-analytics-reference
38. Smart Detection
Uses Application Insights Analytics data and searches for trends and anomalies
Potential memleaks – memory increase
Increase in specific exceptions
Abnormal rise in failed requests
...
Each detection comes with a query!
40. What else is there?
Other client types (mobile, Java, ...)
Sampling our data (in portal)
Do we need all data? Or just data that is representative enough?
Release annotations
Show a marker in the timeline when a release happens
https://docs.microsoft.com/en-us/azure/application-insights/app-insights-annotations
Profiler
Preview that I can’t get to work, but should do profiling when interesting things
happen
https://docs.microsoft.com/en-us/azure/application-insights/app-insights-profiler
42. Conclusion
Logging sucks
Application Insights
the service – collect and ingest, analyze, different views
the developer side (SDK) – enrich, customize, …
Application Insights Analytics
rich querying over all data
base for automated insights/smart detection
43. Thank you!
Please do not forget to evaluate the
session before you leave by using our
Lollipolls!
http://blog.maartenballiauw.be
@maartenballiauw
Editor's Notes
https://pixabay.com/p-960806/
Highlight which customer? Awesome, stack trace for Exception, “Debug is 0” great! RunEngine entry very useful. What if we want to aggregate “Req” / “Ret”?
https://pixabay.com/p-960806/
Open portal.azure.com
Show how to create Application Insights service, open an existing one
Explain the main view there:
List of all data sources we can look at on the left
Main chart showing response time, page view load time, server requests, failed requests -> health!
Sidenote: every chart can be pinned to a portal dashboard in case you want a nice live TV thingy
Charts can be drilled into
Drill into server response time and show some things
Do the same with exceptions
Show that if we look at an event or use search there is a view of all data points as well, including traces and logging etc.
Display details and show properties of the event – who, where, what, …
Open MusicStore and display a few things that have been added:
2 NuGet package references
Show AppInsights package reference added, show Startup.cs where to configure (3 simple “Use...”)
Show _Layout.cshtml, run app, show snippet
Explain data comes from many locations! The NuGet package does a lot here, but not all!
Open service, click “Getting Started”
Explain there are a few entry points to collect all data
There are a few things AppInsights detects automagically for us! Open MyGet AppInsights
Live Metrics Stream
Connects to our running application and inspects the data that comes in real-time
Metrics, health, server CPU and memory, ...
We can filter per server as well
Application Map
Show Availability tests test the server-side
Show client-side uses server-side components
Click around, explain what we can see here
Smart Detection
Smart Detection tries to be proactive in detecting things that are “not normal”
Alerts (open Alerts)
Add alert, see on which metrics we can alert
Show examples, show web tests feeding into alerts, ...
Continuous export
Mention what it does (blob storage)
Show MyGet dashboard in PowerBI
Quickly go over these because we will show them later on!
Availability – explain web tests, explain these can be simple or actual tests created in VS that have multiple steps and checks
Failures – we can see diagrams of exceptions vs. other metrics, as well as Exceptions
Performance – mention profiler available only for Azure App Services
Mention slowest pages client/server side, …
Servers – Some server details, quickly go through this
Browser – Browser stats, verify client-side code, page render times, find slowest rendering pages, ...
Usage – Correlate technical side with user-side sessions, users, custom events (more later), ...
Pretty cool for installing a NuGet package and adding five lines of code, no?
Open MusicStore and show Startup.cs, method Configure
Mention we are configuring logging here, adding AppInsights with the Information level
Open AccountController and show we are structured tracing the login event.
Do a login, then open AppInsights and find the event “logged in …”
Details reveal username property
We get extra info
And we can show the request in which this was logged and get more info
Open MusicStore and explain tracking cart AlbumAdded metric
Click in the site a bit. Perform a checkout.
Complete.cshtml contains client-side tracking as well! Angular! Vue.js!
Show metrics in portal, show events as well
Show we can correlate
Show funnels as well (explain we could add multiple metrics to look at e.g. a sign-up funnel)
Open MusicStore and explain tracking cart AlbumAdded metric
Click in the site a bit. Perform a checkout.
Complete.cshtml contains client-side tracking as well! Angular! Vue.js!
Show metrics in portal, show events as well
Show we can correlate
Show funnels as well (explain we could add multiple metrics to look at e.g. a sign-up funnel)
Open MusicStore
In Startup.cs, find Configure.
We register two .NET middlewares here, show how they work and what they do.
Explain this is something we can always do to enrich data.
Telemetry pipeline that runs before shipping off telemetry is also interesting
Find Startup.cs ConfigureServices where we add two telemetry processors
One to filter out synthetic traffic
Another one to filter out sensitive URLs
Explain we can capture any type of metric, change the result, …
https://pixabay.com/p-960806/
Open portal.azure.com on MyGet AppInsights
Demo AppInsights Analytics
Show some of the sample queries, show the editor, show the various rendering types (auto complete in there)
Run a few sample queries and find custom dimensions
Show smart detection and the queries it generates
Click the links and show what it is as “things to look at after this talk”