Many companies find it difficult to choose the right technologies for their projects. We believe that oftentimes they need the view of senior developers, who can assist them in making the best choice. If you consider .NET, Kristiyan Petrov, Senior Software Engineer can surely help you think of important aspects for your choice. In this short conversation, he outlines key insights on launching a project with .NET. And he speaks from experience. Here are some of the main points in the talk. You can watch the video on YouTube.
Choosing the right tech for your cloud
Every cloud provides different technologies. For example, if you want to use Service Bus, you can use Azure Service Bus or RabbitMQ. But when you are using Azure Cloud, it is better to use their bus, because they are maintaining it… It’s better because if you want to use, for example, RabbitMQ, we have to pay for DevOps.
Usually, every cloud provider offers their own alternative for most technologies. If we want to use .NET for our project, for example, it’s better to use their cloud also. If we use an external technology, we have to pay for support, which is more expensive.
.NET development environments
For the development environment, when we want to create a feature, we initiate SFTP containers. We are not paying for SFTP in the cloud because this is also a part of the cost optimization – every developer initiates resources when they can. We are using Docker and Docker Compose. We are managing everything.
The example above is with SFTP because this is what we use in our current project. This methodology can be applied for databases and so on.
.NET Core 6
In my team we are using .NET Core 6, the latest version, we are using libraries – some abstractions, boxed in NuGet packages. So this is the easiest way to share code between the microservices.
This came with a responsibility because if we introduce a breaking change in a Nuget package this is going to reflect the others. Also when you use .NET Core 6, you have to update most of the packages to this version so if for example you have to use EF, you must use it with version 6. This way you use the latest versions on every technology.
Should we use microservices?
They are very hard to manage and you really have to be sure that you need them and as I said it is not a universal hammer and for example if you have an idea and want to start a project, it is not good to start with microservices directly. Maybe here the good solution is to start with a monolith application – to write it with some design patterns. So after that you can easily extract some parts into microservices.
Starting with microservices comes with slow development and respectively slow time to market. High cost for every feature, because it’s harder to introduce new features if they are communicating with more than one microservice. Microservices are introducing additional complexity and management. They have to be hosted in the cloud which is again expensive. Someone has to set up and support the different environments – DevOps. Again more money.
What should you know before outsourcing
Just to know exactly what they want. Because this is the key point that we are starting to build the architecture to how many microservices we are going to build, are we going to use a Kubernetes cluster or we are going to deploy every microservice separately until we hit, for example, 15 microservices and after that to migrate to Kubernetes. This is, again, some cost optimization because Kubernetes is not cheap. And, for example, if you plan to start with two or three people in the team, maybe they won’t build a lot of microservices for the first six or seven months because it is very hard in the beginning to build all the libraries that are going to work. You just have to know exactly what you want and after that when we communicate we are going to clear some things, we are going to ask questions which I am pretty sure the client usually is not thinking about.
When someone wants to be our partner and wants to work together to build an application, we should know that at the beginning we have to communicate a lot, to clear as much as we can all the requirements. The requirements are the key point for right estimation (cost and time). Together we’ll decide what’s better for the specific project and needs.