What is Drim?
Drim is a company founded by me, Dmitriy Melnik, with the ultimate goal of advancing the software development industry in Kazakhstan and beyond.
There are currently five directions to achieve that:
1. Drim Team
2. Drim Courses
3. Drim Consulting
4. Drim Events
5. Drim City
Drim Team is a community of software engineers united by the shared goal of improving their communication, design, and development skills. The community members go about this in different ways, helping each other solve software development problems and exchanging ideas. They host and attend online and offline private Drim events, offering excellent networking opportunities.
Drim Courses currently provide online courses for .NET backend developers. They cover vast areas from monolithic to cloud-native scalable and fault-tolerant applications. Main themes also include container and orchestration technologies, IaC tools, CI/CD pipelines, blockchain, and many more. Highly skilled developers are central to the thriving software development industry, so Drim places particular emphasis on training them.
Drim Consulting offers consulting services to companies that want to improve their software design and development technologies, processes, and practices. These changes reduce development time and costs, ultimately making businesses and teams happier and more competitive.
Drim Events is an initiative to host public events for the broader developer community. There, we discuss modern technologies and development processes. That helps improve the overall level of specialists, making the labor market more mature. This initiative has a public meetup group where one can find all past and upcoming events. Feel free to join it! https://www.meetup.com/drim-events/
Drim City is an open-source project with a backend developed with .NET and a frontend developed with React. The project has two goals. Firstly, it is a reference implementation of a modern cloud-native, scalable, and fault-tolerant application. Anyone interested in these subjects can learn from Drim City or contribute to it. Secondly, the project builds a learning and communication platform for the broader IT specialists community. You can find Drim City at https://github.com/drim-dev/drim-city.
All projects mentioned above create significant opportunities for anyone interested in advancing their career or company. Stay tuned and join Drim on this journey! ☀️
Drim is a company founded by me, Dmitriy Melnik, with the ultimate goal of advancing the software development industry in Kazakhstan and beyond.
There are currently five directions to achieve that:
1. Drim Team
2. Drim Courses
3. Drim Consulting
4. Drim Events
5. Drim City
Drim Team is a community of software engineers united by the shared goal of improving their communication, design, and development skills. The community members go about this in different ways, helping each other solve software development problems and exchanging ideas. They host and attend online and offline private Drim events, offering excellent networking opportunities.
Drim Courses currently provide online courses for .NET backend developers. They cover vast areas from monolithic to cloud-native scalable and fault-tolerant applications. Main themes also include container and orchestration technologies, IaC tools, CI/CD pipelines, blockchain, and many more. Highly skilled developers are central to the thriving software development industry, so Drim places particular emphasis on training them.
Drim Consulting offers consulting services to companies that want to improve their software design and development technologies, processes, and practices. These changes reduce development time and costs, ultimately making businesses and teams happier and more competitive.
Drim Events is an initiative to host public events for the broader developer community. There, we discuss modern technologies and development processes. That helps improve the overall level of specialists, making the labor market more mature. This initiative has a public meetup group where one can find all past and upcoming events. Feel free to join it! https://www.meetup.com/drim-events/
Drim City is an open-source project with a backend developed with .NET and a frontend developed with React. The project has two goals. Firstly, it is a reference implementation of a modern cloud-native, scalable, and fault-tolerant application. Anyone interested in these subjects can learn from Drim City or contribute to it. Secondly, the project builds a learning and communication platform for the broader IT specialists community. You can find Drim City at https://github.com/drim-dev/drim-city.
All projects mentioned above create significant opportunities for anyone interested in advancing their career or company. Stay tuned and join Drim on this journey! ☀️
🔥5❤1
On Saturday, December 2, we met with Drim Team members in Astana.
The meeting went great. We met in person, discussed many interesting topics, and just had a fun time. Thanks to everyone who came. 🙂
Next stop - Almaty!
There are currently 28 members in Drim Team, with 17 more on their way to join it.
The meeting went great. We met in person, discussed many interesting topics, and just had a fun time. Thanks to everyone who came. 🙂
Next stop - Almaty!
There are currently 28 members in Drim Team, with 17 more on their way to join it.
👍10
On December 27 at 19:30 (UTC+6), Drim Events will host the next meeting about new features of .NET 8. This time, we will discuss .NET Aspire.
.NET Aspire is an opinionated, cloud-ready stack for building observable, production-ready, distributed applications.
We will discuss this technology's main features and conduct a live demo. Furthermore, we will discuss use cases that can benefit from .NET Aspire.
I highly recommend it to all interested in distributed systems and modern web backend development.
The speaker is Dmitriy Melnik, founder of Drim. The meeting is in Russian language.
Register and find additional information at https://www.meetup.com/drim-events/events/297878760/.
.NET Aspire is an opinionated, cloud-ready stack for building observable, production-ready, distributed applications.
We will discuss this technology's main features and conduct a live demo. Furthermore, we will discuss use cases that can benefit from .NET Aspire.
I highly recommend it to all interested in distributed systems and modern web backend development.
The speaker is Dmitriy Melnik, founder of Drim. The meeting is in Russian language.
Register and find additional information at https://www.meetup.com/drim-events/events/297878760/.
👍7
I am pleased to announce that the "CryptoBank Microservices" course has started! Yesterday, December 14th, we held a kick-off meeting where the participants met and discussed the course content. There are 30 participants from different cities of the world, including Astana, Almaty, Moscow, Novosibirsk, Limassol, Prague, and Tokyo.
The main goal of the course is to create a distributed .NET application using modern Software Development Life Cycle processes and tools. These include cloud providers, Terraform, Ansible, GitHub Actions, Nginx, Kubernetes, Helm, Prometheus, Elasticsearch, and many more.
We'll deeply research diverse architectural approaches differing in communication styles, data consistency types, and coordination models. This knowledge will allow the participants to understand each approach's trade-offs and applicability to specific business requirements. The tools learned along the way will include reactive programming, gRPC, Kafka, and RabbitMQ.
Another main topic is communication security. We'll learn about TLS, HTTPS, public key certificates, and PKI. Software engineers must understand how it works, so a systematic review is necessary. Moreover, we'll set up automatic certificate renewal with Automatic Certificate Management Environment (ACME) tools.
Last but not least is our journey in blockchain technologies. We'll look at Ethereum and its innovations, including the Ethereum Virtual Machine (EVM) and smart contracts.
The participants warmly received the denoscription of the course content. They understand these technologies and processes will allow them to become top specialists and successfully compete in the labor market. Motivation is high, so let's get started! 🚀
The main goal of the course is to create a distributed .NET application using modern Software Development Life Cycle processes and tools. These include cloud providers, Terraform, Ansible, GitHub Actions, Nginx, Kubernetes, Helm, Prometheus, Elasticsearch, and many more.
We'll deeply research diverse architectural approaches differing in communication styles, data consistency types, and coordination models. This knowledge will allow the participants to understand each approach's trade-offs and applicability to specific business requirements. The tools learned along the way will include reactive programming, gRPC, Kafka, and RabbitMQ.
Another main topic is communication security. We'll learn about TLS, HTTPS, public key certificates, and PKI. Software engineers must understand how it works, so a systematic review is necessary. Moreover, we'll set up automatic certificate renewal with Automatic Certificate Management Environment (ACME) tools.
Last but not least is our journey in blockchain technologies. We'll look at Ethereum and its innovations, including the Ethereum Virtual Machine (EVM) and smart contracts.
The participants warmly received the denoscription of the course content. They understand these technologies and processes will allow them to become top specialists and successfully compete in the labor market. Motivation is high, so let's get started! 🚀
👍7
In the first part of the "CryptoBank Microservices" course, the participants use Infrastructure-as-Code tools to deploy their applications to a cloud environment. Everyone can choose a cloud provider at their own discretion.
Many factors influence the decision-making process, and pricing is one of them. Let's compare the prices of virtual machines offered by some popular providers. We'll use the configuration that is well-suited for most general-purpose workloads:
* 4 virtual CPUs
* 16 GB of RAM
* 150 GB of local SSD
* West Europe region
Here are the results:
* Azure offers D4ads instances for $182 per month per instance.
* AWS offers m5ad.xlarge instances for $193 per month per instance.
* Google Cloud offers c3-standard-4-lssd instances for $162 per month per instance.
* Hetzner Cloud offers CCX32 instances for $32 per month per instance.
* DigitalOcean uses no instance names and allows the configuration of each parameter. The instance with the given parameters costs $136 per month.
* Yandex Cloud uses no instance names as well. The instance with the given parameters costs $64 per month.
As you can see, prices vary greatly. You can save a lot of money if you take this into account when choosing a cloud provider.
Many factors influence the decision-making process, and pricing is one of them. Let's compare the prices of virtual machines offered by some popular providers. We'll use the configuration that is well-suited for most general-purpose workloads:
* 4 virtual CPUs
* 16 GB of RAM
* 150 GB of local SSD
* West Europe region
Here are the results:
* Azure offers D4ads instances for $182 per month per instance.
* AWS offers m5ad.xlarge instances for $193 per month per instance.
* Google Cloud offers c3-standard-4-lssd instances for $162 per month per instance.
* Hetzner Cloud offers CCX32 instances for $32 per month per instance.
* DigitalOcean uses no instance names and allows the configuration of each parameter. The instance with the given parameters costs $136 per month.
* Yandex Cloud uses no instance names as well. The instance with the given parameters costs $64 per month.
As you can see, prices vary greatly. You can save a lot of money if you take this into account when choosing a cloud provider.
❤4
The Drim Team members came up with the great idea of conducting mock interviews with each other. Without thinking twice, we planned the first one for February 7th. And then, every week, there will be more of them. Such interviews will allow each participant to understand what gaps there are in their knowledge and how to fill them.
Another important goal is to prepare for real interviews, in which our participants will prove themselves as high-class professionals. 🚀
It will be fun!
Another important goal is to prepare for real interviews, in which our participants will prove themselves as high-class professionals. 🚀
It will be fun!
🔥8👍1
Hi all!
We recently introduced Drim Seminars as a new activity in the Drim Team. Seminars are designed to allow participants to discuss important programming and system design topics together. The goal is to expand everyone's knowledge and experience.
We conducted the first seminar yesterday. The topic was "idempotency," a vital concept programmers must understand to develop correct software systems. The participants elaborated on this idea, learning the following things in the process:
* Which HTTP requests must be idempotent and which are not;
* How to deduplicate non-idempotent requests on both client-side and server-side;
* How Stripe API supports idempotency;
* How Microsoft Azure API supports idempotency;
* What is the OASIS Repeatable Requests standard;
* What is the difference between PUT and PATCH requests;
* What is JSON PATCH, and how it affects idempotency;
* Which processing guarantees Apache Kafka supports;
* Why idempotent consumers are essential for some processing guarantees in Apache Kafka;
We published the seminar on YouTube with information sources (articles and books) listed in the denoscription: https://youtu.be/3M5b-EY66yM?feature=shared
The video is in Russian language.
Seminars proved to be an effective learning format, so we will conduct them regularly. Keep in touch!
We recently introduced Drim Seminars as a new activity in the Drim Team. Seminars are designed to allow participants to discuss important programming and system design topics together. The goal is to expand everyone's knowledge and experience.
We conducted the first seminar yesterday. The topic was "idempotency," a vital concept programmers must understand to develop correct software systems. The participants elaborated on this idea, learning the following things in the process:
* Which HTTP requests must be idempotent and which are not;
* How to deduplicate non-idempotent requests on both client-side and server-side;
* How Stripe API supports idempotency;
* How Microsoft Azure API supports idempotency;
* What is the OASIS Repeatable Requests standard;
* What is the difference between PUT and PATCH requests;
* What is JSON PATCH, and how it affects idempotency;
* Which processing guarantees Apache Kafka supports;
* Why idempotent consumers are essential for some processing guarantees in Apache Kafka;
We published the seminar on YouTube with information sources (articles and books) listed in the denoscription: https://youtu.be/3M5b-EY66yM?feature=shared
The video is in Russian language.
Seminars proved to be an effective learning format, so we will conduct them regularly. Keep in touch!
YouTube
Семинар Drim: Идемпотентность
На семинаре мы обсудили понятие идемпотентности и как с ним работать при реализации HTTP API и при асинхронной обработке сообщений.
Использованные материалы:
* Определение идемпотентности - https://en.wikipedia.org/wiki/Idempotence
* Идемпотентные методы…
Использованные материалы:
* Определение идемпотентности - https://en.wikipedia.org/wiki/Idempotence
* Идемпотентные методы…
👍3
Do you want to become a more proficient developer?
Do you want to improve your software architecture skills?
Do you want to make better software design decisions?
Do you want to build software faster and with greater quality?
Use architectural decision records.
What is it? An architectural decision record is a document that captures a significant architectural decision made during software system development. It records the reasoning behind the decision, the context in which it was made, and any alternatives that were considered.
The primary purpose of an ADR is two-fold. First, it gives the team a concrete process for making architectural decisions. Second, it aims to provide future developers, architects, and stakeholders with the historical context of why the team chose a particular approach.
Let's look at an example. Suppose you are developing a microservices application and decide to use gRPC as a communication method. You create a diagram depicting the microservices and arrows between them labeled "gRPC." With this approach, you document what design decision you've made. But you don't document why you've made this decision. Is it necessary to elaborate on the "why" side? Yes, it is. Here are the reasons:
1. The formal process of decision documenting forces the team members to think more thoroughly about possible design options and their trade-offs, thus reducing the number of poor choices.
2. Team members can review decisions using pull requests, allowing them to do so asynchronously and more thoughtfully.
3. If a team member has any questions about implementing a feature, ADRs are a good place to consult and learn how to do it.
4. Evolving the system design and architecture will be easier based on the decision history.
5. New team members can read through all ADRs and quickly gain a broad understanding of the system design and implementation, thus reducing onboarding time.
6. Writing ADRs is an excellent exercise for improving software design skills.
Returning to the gRPC example, you can see what an ADR regarding this decision can look like. It is an ADR from the Drimstarter project (we'll talk about this project later) https://github.com/drim-dev/drimstarter/blob/develop/documents/adrs/backend/0001-grpc-communication.md.
I described the basic idea of ADRs and hope you will consider using them on your projects. In future posts, we will discuss specific details and formats. Before that, you can consult a couple of excellent resources on ADRs:
* https://adr.github.io/
* https://github.com/joelparkerhenderson/architecture-decision-record
I will be glad to hear your questions and feedback in the comments.
Do you want to improve your software architecture skills?
Do you want to make better software design decisions?
Do you want to build software faster and with greater quality?
Use architectural decision records.
What is it? An architectural decision record is a document that captures a significant architectural decision made during software system development. It records the reasoning behind the decision, the context in which it was made, and any alternatives that were considered.
The primary purpose of an ADR is two-fold. First, it gives the team a concrete process for making architectural decisions. Second, it aims to provide future developers, architects, and stakeholders with the historical context of why the team chose a particular approach.
Let's look at an example. Suppose you are developing a microservices application and decide to use gRPC as a communication method. You create a diagram depicting the microservices and arrows between them labeled "gRPC." With this approach, you document what design decision you've made. But you don't document why you've made this decision. Is it necessary to elaborate on the "why" side? Yes, it is. Here are the reasons:
1. The formal process of decision documenting forces the team members to think more thoroughly about possible design options and their trade-offs, thus reducing the number of poor choices.
2. Team members can review decisions using pull requests, allowing them to do so asynchronously and more thoughtfully.
3. If a team member has any questions about implementing a feature, ADRs are a good place to consult and learn how to do it.
4. Evolving the system design and architecture will be easier based on the decision history.
5. New team members can read through all ADRs and quickly gain a broad understanding of the system design and implementation, thus reducing onboarding time.
6. Writing ADRs is an excellent exercise for improving software design skills.
Returning to the gRPC example, you can see what an ADR regarding this decision can look like. It is an ADR from the Drimstarter project (we'll talk about this project later) https://github.com/drim-dev/drimstarter/blob/develop/documents/adrs/backend/0001-grpc-communication.md.
I described the basic idea of ADRs and hope you will consider using them on your projects. In future posts, we will discuss specific details and formats. Before that, you can consult a couple of excellent resources on ADRs:
* https://adr.github.io/
* https://github.com/joelparkerhenderson/architecture-decision-record
I will be glad to hear your questions and feedback in the comments.
👍4🔥3👏1
Join the online meeting where we will discuss architectural decision records.
https://www.meetup.com/drim-events/events/303461315/
https://www.meetup.com/drim-events/events/303461315/
Meetup
Architectural Decision Records, Thu, Sep 26, 2024, 8:00 PM | Meetup
Architectural decision records are an effective way to make important software architectural decisions and document them for further usage. Many developers and development
👍3
A video recording of the ADR seminar can be found at https://youtu.be/iOuRxI0dbPo
YouTube
Семинар Drim: Architectural Decision Records
На семинаре мы обсудили, что такое Architectural Decision Records, как их создавать и какие преимущества они дают для разработчика и для команды.
Использованные материалы:
* Статья с описанием формата ADR - https://www.cognitect.com/blog/2011/11/15/documenting…
Использованные материалы:
* Статья с описанием формата ADR - https://www.cognitect.com/blog/2011/11/15/documenting…
👍3🔥2
My friend Askhat Omarov is looking for a tech lead for his product https://farel.io. I can recommend Askhat as a competent manager who has created a team of senior and lead level specialists. Contact me @mitro52 if you are interested. Here is the position denoscription:
Farel is a San Francisco-based startup revolutionizing how airlines manage inventory and sales with our cutting-edge SaaS platform. We’ve raised over $4M from top-tier Silicon Valley investors, including Y Combinator (the launchpad for companies like Airbnb, Dropbox, and Coinbase). Our previous team successfully built an online travel agency (OTA) that was acquired by a publicly-traded company. With a diverse and dynamic global team across the US, Georgia, Turkiye, Kazakhstan, Brazil, and Mexico, we are ambitiously pushing the boundaries of the aviation industry.
We are looking for a Tech Lead to join our growing team and help bridge the gap between business requirements and technical execution. In this role, you will ensure that our system architecture is cohesive, scalable, and aligned with business objectives. You will take ownership of the technical vision, work closely with business and engineering teams and provide leadership in making key decisions.
Key Responsibilities:
• Design, review, and approve architectural solutions for new and existing features, ensuring seamless integration and scalability across the platform
• Act as a bridge between product managers and developers, ensuring business requirements are effectively translated into technical implementations
• Lead discussions on technical challenges and solutions, providing clear guidance to the development team, and making authoritative technical decisions
• Collaborate with product managers and developers to define technical project roadmaps, aligning them with business goals and ensuring efficient resource utilization
• Establish and promote software engineering best practices for code quality, security, and system performance, with a focus on sustainable long-term architecture
• Provide technical guidance and mentorship to backend and frontend developers, helping them grow their skills and ensure alignment with the overall architecture
• Maintain a high-level view of the project, identifying potential bottlenecks and areas for improvement, and ensure that all technical decisions contribute to the broader business strategy
Qualifications:
• 6+ years of experience in software architecture, solution design, or technical leadership roles
• Deep technical knowledge of Spring, Spring Boot, PostgreSQL, Angular, Azure, Kubernetes, and GitLab. Proven experience translating business requirements into robust technical solutions
• Strong communication and interpersonal skills, with the ability to influence both technical and non-technical stakeholders
• A passion for solving technical challenges while understanding the broader business context.
Additional Skills:
• Experience working with cross-functional teams in a startup environment.
• Ability to make high-stakes decisions and take responsibility for their outcomes.
• Understanding of BPMN and workflow design, a plus.
Farel is a San Francisco-based startup revolutionizing how airlines manage inventory and sales with our cutting-edge SaaS platform. We’ve raised over $4M from top-tier Silicon Valley investors, including Y Combinator (the launchpad for companies like Airbnb, Dropbox, and Coinbase). Our previous team successfully built an online travel agency (OTA) that was acquired by a publicly-traded company. With a diverse and dynamic global team across the US, Georgia, Turkiye, Kazakhstan, Brazil, and Mexico, we are ambitiously pushing the boundaries of the aviation industry.
We are looking for a Tech Lead to join our growing team and help bridge the gap between business requirements and technical execution. In this role, you will ensure that our system architecture is cohesive, scalable, and aligned with business objectives. You will take ownership of the technical vision, work closely with business and engineering teams and provide leadership in making key decisions.
Key Responsibilities:
• Design, review, and approve architectural solutions for new and existing features, ensuring seamless integration and scalability across the platform
• Act as a bridge between product managers and developers, ensuring business requirements are effectively translated into technical implementations
• Lead discussions on technical challenges and solutions, providing clear guidance to the development team, and making authoritative technical decisions
• Collaborate with product managers and developers to define technical project roadmaps, aligning them with business goals and ensuring efficient resource utilization
• Establish and promote software engineering best practices for code quality, security, and system performance, with a focus on sustainable long-term architecture
• Provide technical guidance and mentorship to backend and frontend developers, helping them grow their skills and ensure alignment with the overall architecture
• Maintain a high-level view of the project, identifying potential bottlenecks and areas for improvement, and ensure that all technical decisions contribute to the broader business strategy
Qualifications:
• 6+ years of experience in software architecture, solution design, or technical leadership roles
• Deep technical knowledge of Spring, Spring Boot, PostgreSQL, Angular, Azure, Kubernetes, and GitLab. Proven experience translating business requirements into robust technical solutions
• Strong communication and interpersonal skills, with the ability to influence both technical and non-technical stakeholders
• A passion for solving technical challenges while understanding the broader business context.
Additional Skills:
• Experience working with cross-functional teams in a startup environment.
• Ability to make high-stakes decisions and take responsibility for their outcomes.
• Understanding of BPMN and workflow design, a plus.
👍4
If you are interested but don't know if you have the necessary skills, I can assess them by calling and talking to you.
👍3
Я решил изменить язык канала с английского на русский. Причина в том, что на текущем этапе развитие Drim будет сфокусировано на рынке СНГ. Русский язык позволит расширить аудиторию канала и сделать его более полезным.
Вчера я запустил лендинг Drim - https://drim.dev/
На сайте можно прочитать о всех предложениях по развитию и обучению. Кроме того, можно почитать отзывы участников. Буду благодарен, если поделитесь ссылкой с теми, кому это может быть полезно.
На сайте можно прочитать о всех предложениях по развитию и обучению. Кроме того, можно почитать отзывы участников. Буду благодарен, если поделитесь ссылкой с теми, кому это может быть полезно.
🔥10👍1
18 декабря в 20:00 по времени Астаны Дмитрий Мельник проведёт публичный семинар на тему "Использование платёжного шлюза Stripe для приёма онлайн-платежей".
Это первый семинар из цикла на тему платёжных систем. На нём участники узнают, какие есть платёжные шлюзы, и какие проблемы они решают.
После этого мы посмотрим, как организовать на сайте приём платежей за товары и услуги с помощью популярного сервиса Stripe. Бекенд демонстрационного приложения будет создан с помощью ASP.NET Core 9, а фронтенд - с помощью React и Next.js.
На следующих семинарах из цикла мы изучим более продвинутые возможности платёжных шлюзов, такие как подписки и отложенные платежи.
Приходите, будет интересно и полезно!
Ссылка на событие - https://www.meetup.com/drim-events/events/304858560.
Вступайте в группу https://www.meetup.com/drim-events, чтобы не пропустить это событие и узнавать о новых 🚀
Ссылка на Google Meet - meet.google.com/uay-qcfe-fgs
Больше информации о Drim можно получить на сайте https://drim.dev/.
Это первый семинар из цикла на тему платёжных систем. На нём участники узнают, какие есть платёжные шлюзы, и какие проблемы они решают.
После этого мы посмотрим, как организовать на сайте приём платежей за товары и услуги с помощью популярного сервиса Stripe. Бекенд демонстрационного приложения будет создан с помощью ASP.NET Core 9, а фронтенд - с помощью React и Next.js.
На следующих семинарах из цикла мы изучим более продвинутые возможности платёжных шлюзов, такие как подписки и отложенные платежи.
Приходите, будет интересно и полезно!
Ссылка на событие - https://www.meetup.com/drim-events/events/304858560.
Вступайте в группу https://www.meetup.com/drim-events, чтобы не пропустить это событие и узнавать о новых 🚀
Ссылка на Google Meet - meet.google.com/uay-qcfe-fgs
Больше информации о Drim можно получить на сайте https://drim.dev/.
👍4🔥3