Dynatech is a unique tech company in many ways, as it employs over 250 technical people to support all the global brands in the Dyninno Group. Founded in 2016, the company utilizes modern technologies to develop the ever-expanding product portfolio while ensuring the high quality of the code.
We interviewed Jurijs Saveljevs, Lead Software Engineer, and Viesturs Teivans, Tech Lead, to find how they have set up their tech stack and daily work. The interview covers topics including the benefits of Node.JS & Typescript, what mistakes Dynatech has made when choosing technologies and how they approach data-driven decision-making.
🔵 To start at the beginning, what does the company Dynatech do exactly?
Jurijs: Dynatech is a global business center based in Riga, Latvia. Among others, we provide IT services and solutions for all the businesses within the Dyninno Group, consisting of three divisions: Travel, Entertainment and FinTech. There are many independent businesses within the conglomerate, and Dynatech is the unified technology company powering them. Mainly by IT services but also competencies in marketing, HR, project management, etc.
🔵 How is the work divided between different teams in Dynatech?
Viesturs: The work is divided mostly by product. Within each of these three areas of the Dyninno Group, we have specific products with specific teams. Sometimes teams have multiple projects at hand because some of them only need to be maintained. It’s also possible to migrate between them, for example, if a person is interested in a technical problem that involves a specific product.
We also have people like Jurijs who work on R&D. This is a shared team that supports the infrastructure of all our products. For example, they pick the new technologies and research the best practices for implementing them. That helped us a lot in migration to Kubernetes and automated pipelines.
🔵 Can you describe a bit what projects you are working on these days? What do you like the most about them?
Viesturs: I’m developing a new flight search product which consists of several Node.js applications. In addition to writing the code, I’m also very involved in managing the code quality to keep it easily maintainable and ensure that we have proper unit tests. A lot of it is automated, but we still make sure that people use this automation consistently, and we don’t end up with spaghetti code.
We’ve had several major refactors during the project, and those were mostly pretty easy. For example, we have changed the internal data structure for the search functionality two times, which is an enormous refactor for all the services that need to operate on it. I make sure that things like that go smoothly.
Jurijs: I’m working more on infrastructure and applying best practices to the application development flow. We’re currently moving to orchestrated environments, mostly Kubernetes, which means we run multiple clusters for multiple products in various Kubernetes installations. Mostly on AWS EKS, but we are also experimenting with DigitalOcean. We have some exposure in Russia, where we use Yandex.Cloud, and we are also researching some Asian cloud providers. So I’m into orchestration and bootstrapping applications for that.
The second thing I’m working on is application metrics, so whenever there is an anomaly in how the product or runtime behaves, we get alerted. And the third is ensuring the continuous deployment for our applications, including making sure that every application is built and containerized correctly, and doesn’t have any known security vulnerabilities or obvious bugs that we can catch with static code analysis.
Jurijs Saveljevs, Lead Software Engineer at Dynatech
🔵 What principles do you follow when choosing new technologies?
Jurijs: We indeed have some key factors that we value in technology choices. One of them is open-sourceness because whenever something doesn’t fit, you can identify the issue and improve it. We actively contribute to some open-source projects, especially to the infrastructure stuff where there aren’t many administrative tools for the job. We like Node.js & TypeScript especially because of the self debugging and profiling. These problems were solved a long time ago, and you don’t need to worry about them.
Viesturs: In the case of Node.JS, another great strength is the mature and highly active community. If you have an issue with some package, it’s likely that the solution already exists. Yes, it still might not be optimal, and you may need to contribute, but overall, it speeds up the development a lot.
🔵 Have you had any significant strategic mistakes when building your technology stack?
Jurijs: The major misdirections were probably related to how we make critical decisions. The first thing that comes to mind was the tendency to split everything up into microservices. We followed that trend too aggressively and spread the services too thin, this is now known as the nano service anti-pattern. Fortunately, we managed to fix it by reunifying some functionality, but we definitely had that problem back in the day.
The other misdirection was the tendency to build custom solutions for the things that already existed. It’s called the “not invented here” syndrome, which sometimes happens in huge companies. At some point, we were at around 300 tech tools, some of which were probably built just because folks wanted to try something new. Or there was one feature lacking, so they copied the entire product plus the one missing feature. We have fixed this issue by introducing a formal process for technology decisions.
Viesturs: We also have sometimes chosen the wrong technology for the project. One unhappy project is running on Hack, which is a version of PHP by Facebook. The major challenge with it is the lack of community, which means you have to write everything yourself. Even something as simple as ORM to use your database correctly. Although the ORM exists, it has issues, probably because someone somewhere didn’t have time to finish it properly. It’s a super weird scenario that wouldn’t happen with any normal open-source ORM. And in the end, Hack doesn’t solve much other than what PHP already does.
🔵 How do you ensure the quality of your codebase? How does your tech stack help you with the ease of refactoring?
The next thing is this decoupling of code, the modularity. During my time here, I have introduced a principle that if your application uses an external service, it has to have its own service around it. Therefore, if you change the API or the application requirements, you can simply create a bit of middleware that translates the input to whatever your application needs.
And finally, unit tests. All the interfaces won’t save you with major refactors, like changing the data structure for a service that’s already running. It may look like it’s working on the surface, but then some response comes back as the wrong type, etc. Once you have the unit tests, they can actually show you what’s working or not. And then you have to either update the test, if the data structure has changed, or update the code.
Viesturs Teivans, Tech Lead at Dynatech
🔵 Let’s talk about testing for a moment. How have you organised the testing major updates, so both the developers and business people stay happy?
Viesturs: For the business people, it’s the metrics. Are there enough requests? Do the clients react how we expected? If they don’t, then is it a bug? So monitoring is the big thing when we’re in production.
In the testing environment, we have automated unit tests for the Node.js applications. They run in the QA pipeline, and if something does not pass, we don’t merge it. The major releases are also tested semi-automatically by our QA people. They check things like if the user does something, does the correct log message happen? Do we get the correct change database?
Jurijs: We also use some functional tests in production to ensure the quality of service. Periodic tests, targeted at the production environment, are performing the users’ usual workflows. In the case of an online ticket agency, we might search for flight tickets or a destination. And we can verify if we find what we need. We have such tests for the vital functions of every service.
We also use stress and load testing to monitor known bottlenecks and search for unknown ones. We run the stress tests mostly on the production environment in off-peak hours. These tests don’t run periodically, but we perform them on-demand after notable component changes.
🔵 How did you come up with the data streaming approach for the microservices? What is it, and how do you use it currently?
Viesturs: I think it’s a pretty popular solution currently. The idea behind the data stream is that Redis is handling the data transfer between services. One of the advantages is reducing strain on the network. If you have numerous services trying to communicate with each other, you put enormous pressure on the network. Even in the case of internal services, there might be gigabytes of data flying here and there. People sometimes tend to ignore those internal processes as they don’t go over the internet, but if we have 300+ services that talk with each other, then the situation becomes pretty bad.
The second advantage is ensuring that the data ends up where it needs to. Because the data stays in the Redis, any service that needs it can get it. In some ways, it’s insurance against processing errors. For instance, if a service has an error and needs rebooting, then after coming back up, it can simply check the data and continue where it left off. In terms of the actual code, it’s also more understandable with data streaming. The data stream is usually observable, and the service that called it already has the context for maintaining the data.
Jurijs: Data streaming allows us to predictably design system communication. In a classical RPC flow, a service would send a request and then get results in return. But data streaming guarantees that we can provide the results. Also, you can ping results any time or share them across the systems as long as everyone is aware of the DTL. It allows very efficient contracts for spreading data across the system.
🔵 How do you use the data in daily discussions?
Jurijs: We genuinely believe in data-driven decision-making. In any argument, whether it’s tech-related or it’s business-related, the person who wins is the one who has numbers that are gathered correctly and prove his opinion. If we don’t already have the data, then we follow a pretty scientific process to collect it. For example, we might set out to test a hypothesis that building X will improve Y in some way. If you share this belief in data and the scientific method of doing things, you fit into our team very well.
Viesturs: And I guess most programmers probably do! (Laughing)
🔵 And finally, what type of developers would fit into the Dynatech team the best, in your opinion?
Jurijs: It might sound naive, but the answer is that we need people who share our values. We believe in quality: If you invest time in better design, optimisation or automation, from our experience, it usually pays off. We are searching for folks who believe the same.
Viesturs: I absolutely agree. We value people who are passionate and aim for quality in the code they deliver. Also, we expect that people can support their opinions with data. When it comes to tech choices, the “I want to try something new and cool” approach is not good enough. We have to pick the tools that are best for solving a specific problem.
For example, just before the interview, we were arguing with Jurijs about tech choices. We invite these arguments because the best solutions arise from the creative conflict. The idea is that you can bring your own opinion, but you also have to support it with a use case.
This Baltic country located between Estonia and Lithuania seems to have picked up its neighbours’ passions for innovation, pioneering ideas, and technology. Recently, its growing startup scene has been attracting more and more attention from entrepreneurs worldwide.
Latvia became a member of the EU in 2004 and also joined the Eurozone in 2014. Since then, the country has flourished with its well-educated and smart talent pool, vibrant startup ecosystem and low cost of doing business. 🚀
Before diving into what makes Latvia a great place for startups and entrepreneurs of any expertise, let’s have a look at the country’s startup ecosystem. 🕵️♀️
Introduction to Latvia’s startup ecosystem
Let’s rewind to 2008 when the economic crisis was shaking the whole world. Latvia is one of the rare countries which recovered from the crisis through entering the startup world.
✅ Who would not love a fast internet? Latvia ranked as the 10th country with the fastest internet worldwide. Moreover, you can find free wi-fi almost everywhere in the Riga city centre!
✅ Startup Latvia shares a very interesting insight about why Latvia is a great choice for startups which we will also mention in the following section: as the startup market is unsaturated, you don’t have to be a genius like in Silicon Valley… you just need to be very good.
✅ Deep tech, fintech, and SaaS products make up the majority of the Latvia-based products (for now!).
What makes Latvia a great country for startups?
Before starting this section, we assure you that this will not be a short one! There are many reasons why many startups have emerged in Latvia over the years and why its popularity is ever-growing .
👉 If you are a startup founder or planning to start one in the near future, you probably know how much it matters to have access to business incubation programmes and support from the government. Well, it seems Latvia has already nailed it!
In this Baltic country, if you are a startup owner, you can easily have access to one of the diverse range of modern co-working spaces along with many business incubators – which are supported by not only the government but also the academic and private sectors.
👉 So, what’s out there for citizens of non-EU countries? If you are one of them, start packing now – Latvia has thought of you too!
Did you know that a Startup Law has been passed and now, you and your spouse and children can officially apply for a Startup Visa? The goal is to make the country’s startup ecosystem more productive with the arrival of creative entrepreneurs with diverse backgrounds and mindsets.
You can find more information about the Startup Visa from Startup Latvia!
Wondering about the Startup Law and the financial support for startups? Here is a couple of points that could encourage you to consider Latvia as your new country of residence:
➡️ Did you know that Latvia is one of the first countries in the world to pass a Startup Law? Well, now you do! This also indicates that the country has the mindset and openness that every entrepreneur is looking for these days.
The Law proposes a more entrepreneur-friendly taxation system for startups. So, instead of carrying a heavy tax burden on your shoulders, you can enjoy the advantages of the system in Latvia and put more focus on developing your business.
➡️ There are lots of financial opportunities for startups as well. For instance, Latvia’s Innovation Voucher programme offers up to €25K of financial support to startups. The goal is to facilitate the development of new technologies.
➡️ You think that’s it, right? But there’s more! The LIAA (the Investment and Development Agency of Latvia) has 15 incubators that support the startups as well as the ecosystem, offering mentor support, development grants and more.
“In the Latvian startup ecosystem, we can see the drive and energy to break through to international markets to be recognized as innovators. Lots of great deep tech, fintech, and SaaS products are built here. We are expecting to see larger investment rounds, exits, and accomplishments as the existing companies mature”.
Chairman of the Latvian Startup Association and CEO of Mailigen
5 Promising Latvian startups
In this section, we will get to know more about up and coming Latvian startups. 🎊
Founded in 2016, Nordigen offers free banking data and premium insights for banks, financial institutions and lenders. The company works with over 50 global banks and lenders, operating across 13 countries.
If your expertise is Finance, keep an eye on this promising company and their job openings on the MeetFrank app! 💰
Lokalise is a localisation and translation management system that was founded in 2016.
The company’s expertise ranges from content translation from websites to mobile apps and games. 📱
🎶 Founded in 2015, Gamechanger Audio produces pedals for musicians, which engineers would also love. In their own words, the company is founded by “four friends committed to exploring the uncharted territories of music electronics and creating devices that provide real value while stretching the imagination of both musicians and engineers.”
Sound like your kind of mindset? Mark their name on your potential-companies-to-apply-to list for 2021!
Vialet was founded in 2017 and is a comprehensive financial management tool.
The things you can do with Vialet are numerous, from opening an account to managing your finances anytime and transferring funds. 🤑
Founded in 2015, Atlas Dynamics UAVs is a highly innovative technology company that produces drones with an award-winning aerodynamic design. 💪
The design generates lift and enables increased endurance, speed and weather resistance. If you totally get what that means, you may be a good fit for Atlas Dynamics UAVs!
Last but not least
If you want to start and run your business in an EU country, are looking for efficiency and productivity along with a vibrant startup ecosystem, are fond of nature and experiencing 4 seasons, Latvia is waiting for you. 😊
Download the MeetFrank app today and have a look at the openings now!
Good luck in your job hunt! 🍀
Want to boost your company’s visibility in the Latvian job market?
To kickstart the community in Latvia, MeetFrank and Startin.LV have joined forces to boost the job market visibility of companies operating in Latvia.
Leave your contact details, and we’ll be in touch shortly. 👇
When setting up your profile at MeetFrank you will encounter a wide variety of programming languages. Just select your expertise and MeetFrank will connect you directly to companies that are looking for a talent like you! One click, no hassle needed.
Did you know that Scala is used by well-known companies such as Twitter, LinkedIn, Netflix and Airbnb? Read further to find out more!
What does the company Evolution do?
Evolution is a world-leading B2B provider of video-streamed Live Dealer gaming with over 400+ engineers located in Riga, Minsk, Tallinn and Amsterdam Engineering Hubs. The company is successfully using Scala as the main programming language for their back-end services.
They are actively recruiting Scala Engineers in Minsk, Riga and Tallinn – offering interesting projects and a modern technology stack, not only on the back-end but also on the front-end (using TypeScript, React, Redux, MobX, Babylon.js and WebGL). Check out their current vacancies:
Evolution has offices in 15 countries and Engineering Hubs in Latvia, the Netherlands, Estonia and Belarus.
How does Evolution implement Scala programming language in their daily work?
Juris, you went all out there and called Scala an elegant and powerful programming language. What made you fall in love and how did you implement Scala into your everyday work?
We have been successfully using Scala at Evolution since 2013. Initially we started using Scala in unit tests, but over time, we realised that the code we write in Scala has higher quality than our Java code.
It was also easier to maintain due to a more advanced type system. Besides, we added Akka to our technology stack and Akka can be used more naturally from Scala.
Overall, the developers liked Scala, and we have successfully transitioned our codebase into modern and functional Scala code, which also involved the migration of other technology stack components: from Java and Hazelcast, Hibernate, Spring and JSP frameworks to Scala and Akka, including Akka Persistence. We split the monolithic application into microservices that communicate with each other using Kafka. The integration had to be carried out gradually while the system remained production.
How did you stumble upon Scala? What exactly charmed you?
I started learning Scala in late 2012. At the time, I was looking for a “better Java”, and while I was programming in Groovy, it seemed both a step forward and back compared to Java.
At first, the learning curve for Scala seemed steep. I was reading some complicated library code, understanding very little, and thinking that “this really uses operator overloading too much”. But then I finished the Coursera course “Functional Programming in Scala” by “the father of Scala” Martin Odersky and fell in love with the language.
I like the compile-time type checking features that well written Scala code has. The compiler helps you do various refactoring very efficiently, guiding the developer from working code to working code, without breaking anything. The probability that “if your code compiles, it works” is really high in Scala.
What are the main benefits of using Scala?
Scala leads to better code and happier developers. The absolute majority of our developers who have become proficient in Scala are no longer interested in moving back to their previous languages.
Scala is a general-purpose back-end (server-side) language, and you can do everything in it that you could do in Java. It has good interoperability with existing Java code, as well as excellent frameworks for developing distributed, low-latency systems.
Scala supports the functional programming (FP) paradigm, which leads to more maintainable code.
The average proficiency of Scala developers is very high – if a developer decides to move out of the “comfort zone” and migrate to Scala, he or she is probably interested in developing skills and writing good code.
We at Evolution have one of the most advanced Scala.js projects in production, which manages the work schedules of our 8000 game presenters world-wide.
But surely, there must be some drawbacks?
True, the main drawbacks of Scala are slow compilation times and a rather steep learning curve.
Is the language still evolving? What are the future prospects for Scala?
Scala is an evolving language with a vibrant ecosystem, including many open source contributors. The new version of Scala language, “Scala 3” adds many desired features and improves existing ones.
However, not only the language is evolving but also new libraries are being introduced, such as ZIO and Cats Effect 3. Besides that, the community is finding new, useful ways to write Scala code, such as with the Tagless Final approach. The prospects are very good indeed.
If a software engineering enthusiast is reading this, then why should they learn Scala?
Learning Scala is certainly the right choice! It will make you into a better developer even if you do not stick with it. I wish more universities taught Scala to students. The closest language commonly taught is Haskell.
Haskell is an important functional programming language and functional Scala borrows a lot from it. But there are fewer Haskell vacancies, and it is used less often in production. The language itself is beautiful, but the ecosystem is lagging.
You say that Scala is pretty rarely taught in universities. Where should one start then?
I believe that the Kernighan & Ritchie quote “The only way to learn a new programming language is by writing programs in it” is very true.
So you must write code. Every day. Start with simple tasks from HackerRank or similar sites. Continue with more and more complicated tasks and systems, especially ones that help you solve problems you yourself care about. Contribute to open source.
I think Scala is quite easy to pick up if used as a “better Java with some syntactic sugar”. If used in an idiomatic Functional Programming-style, it also becomes a matter of learning Functional Programming and how to apply it using Scala.
As Evolution is such a powerful hub for Scala, is there any opportunity to come and learn the language from your team?
Participating in Scala bootcamps can help you learn faster from experienced mentors. All you need for participating is fundamental programming knowledge and a desire to learn – previous Scala or Functional programming experience is not required. Our bootcamp showed that people want to learn Scala. We received almost 500 applications this summer for the Scala Bootcamp in Riga!
Previously there were fewer learning materials and it was easier to just say “start with the ‘red book’ by Chiusano and Bjarnason” but many excellent authors have now published books and tutorials.
Thus we have collected, in our opinion, links to the best Scala learning resources. Find them in the “Learning resources” section. We constantly keep them up to date.
Looking for new adventures? Try out MeetFrank today
MeetFrank was created to make the job market open, stress-free and quite a bit fun really. We do all we can to ensure that companies can find the talent they need without undue pain and that talent can make the best possible decisions with all the necessary information.
To get started on MeetFrank, head on over here to check out our free app and see what the best companies are offering.
And if you’re a recruiter, get in touch with us here to book a demo call so you can see how MeetFrank works. We’ll look out for you.