Feb 18, 2021 · 6 min read
I prefer using GraphQL over REST APIs wherever available, primarily because I can avoid overfetching and underfetching data while still enjoying the benefits of contract-based development. For this exercise, assume that you are the DevOps lead of an organization/open-source community that uses GitHub to manage its projects under a GitHub Organization. GitHub Organizations are shared accounts consisting of members and projects with sophisticated security and administrative features. You have been asked to ensure that your organization’s repositories are healthy such that there are no PRs in an unmerged state for more than one week, and every issue is either resolved or updated in 12 hours.
Feb 03, 2021 · 11 min read
Imagine running a .NET Core application in Kubernetes, which suddenly starts being sluggish, and the telemetry fails to give you a complete picture of the issue. To remediate performance issues of applications, starting with .NET Core 3, Microsoft introduced several .NET Core runtime diagnostics tools to diagnose application issues. dotnet-counters to view Performance Counters. dotnet-dump to capture and analyze Dumps. dotnet-trace to capture runtime events and sample CPU stacks. dotnet-gcdump to collect Garbage Collector dumps of application.
Jan 02, 2021 · 10 min read
In many event-driven applications, preserving the sequence of events is essential. For example, an event-driven eCommerce application might have the following states, transitions, and events. A user adds N items to the basket. This action generates the item added event. The user checks out the basket. This action generates the basket checked out event. The user pays for the items. This action generates the payment made event. Inventory decrements the count of available items by N.
Oct 24, 2020 · 9 min read
Many microservices applications require background tasks and scheduled jobs to process requests asynchronously. In the .NET Core ecosystem, background services are called Hosted services because a single host, such as a web host or a console host, can run several such services in the background while it is alive. In terms of implementation, a hosted service is required to implement the IHostedService interface. You can implement the IHostedService interface yourself, or even better, leverage the BackgroundService class that implements some common concerns such as cancellation token management and error propagation to the host for you.
Oct 01, 2020 · 6 min read
The default implementation of the gRPC on .NET - Grpc.net is built on Grpc.Core which uses the protoc tool (see: ProtoCompilerOutput) to generate C# artifacts from .proto files. Also, it adds complexity to testing the services and sharing the contracts with clients. The proto files are artifacts/files shared between the clients and the server that need to be managed and kept synced between the two parties. It is important to note that protobuf is simply a serialization format, and it is not dependent on proto files.
Jun 20, 2020 · 17 min read
I want to stretch every dollar that I spend on the cloud. I run a handful of web applications on Heroku, and like everyone else, run a suite of smoke tests and load tests on every release increment in a non-production environment. Load tests are important: they help us not only to understand the limits of our systems but also bring up issues that arise due to concurrency, which often escape the realms of unit tests and integration tests.
VS Code Remote Development with Docker Compose: Developing services in Standalone and Integrated Modes
May 26, 2020 · 12 min read
VS Code remote development is a brilliant feature from the VS Code team. Using the extensions available in the VS Code remote extension pack, you can develop your applications in an external development environment viz. a remote server (through SSH), containers, and WSL. The premise of the three modes of development is the same. The application code is stored either on your local system (on container and WSL through volume mount) or remote server (through SSH), and the local instance of the VS Code attaches itself to the external system through an exposed port (container and WSL), or SSH tunnel (remote server).
Mar 26, 2017 · 6 min read
Visual Studio 2017 is currently the best IDE that is in-line with the Microsoft’s strategy of embracing non Microsoft platforms and operating systems. I am a web developer, therefore, following is my outline of the most compelling features of Visual Studio 2017. Setup Experience Visual Studio no longer asks you to select options from a long list of checkboxes. It presents a more easy to comprehend list of workloads that are segregated by categories.
Jan 03, 2017 · 7 min read
I don’t know how popular Node.js still is, but it is always fun to learn new programming languages. If you have previously worked with relational databases such as SQL database with Node.js, you must’ve noticed that there are several node packages available to enable application integration with SQL database. However, while building commercial applications, developers always want to use packages that are backed by professional support and a lively community. One such module is Tedious which we will discuss today.