Choosing a tech stacks for a healthcare IT product is not something you can easily revisit later, as it’s quite a time-consuming and costly process.
Unlike many other domains, healthcare systems work in environments where downtime is not just inconvenient — it directly affects patient care. These systems often run continuously, integrate with multiple external platforms, and handle sensitive data that cannot be easily migrated or reprocessed. Because of that, even small architectural decisions made early on can become very difficult to change without risk.
To make this topic more practical, we spoke with Aleksandr Korzun, Ispirer Toolkit product owner, and Oleg Shkalenko, our application migration expert. They shared how to approach key technical decisions in healthcare projects in a way that helps avoid costly rework later.
Part 1. Databases in healthcare: how to approach the decision
Aleksandr Korzun, Ispirer Toolkit product owner
How to approach database selection at the start of a healthcare project?
It usually makes sense to start not from technology, but from the product itself. What kind of data you have, how it is used, and how the system is expected to grow will influence the choice much more than any specific database.
In healthcare, data is typically structured, long-lived, and reused across different parts of the system. On top of that, there are almost always integrations with other platforms. Because of that, the focus tends to be on reliability and consistency rather than flexibility.
Another important point is how the data will be used over time. A system that only stores records is very different from one that also supports analytics, reporting, or cross-system data exchange.
How to decide between relational databases and NoSQL in healthcare?
Core healthcare systems often rely on relational databases. They fit naturally with structured data and make it easier to manage relationships between entities like patients, visits, and medical records.
These relationships are not something you can easily simplify or ignore. If you try to move them out of the database into application logic, things usually become harder to maintain.
NoSQL still has its place, but usually not as the core database. It is more often used for supporting tasks, like local storage, caching, or isolated components.
What to consider when modeling data in healthcare systems?
The tricky part is not always the structure itself, but how the data is handled.
Healthcare systems deal with sensitive personal data, so you need to think about separation and access from the very beginning. In practice, that often means storing identifying data separately and working with internal IDs in most operations.
Another thing to keep in mind is that the same data may be used in different contexts. Operational workflows may require full access, while analytics often requires anonymized or partially masked data. If this is not considered early, it becomes harder to adjust later.
What data protection measures should be implemented at the database level from the start?
Even at an early stage, some things are better not postponed.
Personal data need to be separated from technical identifiers. Access is best designed to be role-based, so different users see only what they actually need. Sensitive data should not be exposed directly when it can be replaced with internal identifiers.
In addition to logical data separation and role-based access, healthcare systems usually require encryption at rest and in transit, audit logging for all data access, and data masking for non-production environments. These measures are often needed not only for security reasons but also for compliance with healthcare regulations.
It is also worth thinking about what happens outside the core system. For example, when data is exported for analytics, it should be additionally protected.
These are not advanced features — they are part of the baseline in healthcare.
What database-related decisions are important to make early on?
Some decisions are much easier to make early than to fix later.
For example, choosing a healthcare cloud database can simplify scaling and operations, but it still requires careful compliance, latency, and cost considerations. It also makes sense to think ahead about integrations, even if they are not implemented immediately.
Healthcare systems rarely stay isolated, so planning for interaction with other systems early on usually pays off.
Where database performance issues usually come from in healthcare systems?
In many cases, the issue is not the database itself, but where it runs.
Outdated hardware, local installations, and lack of updates are common reasons why performance starts to degrade. These environments become bottlenecks over time.
In cloud-based setups, this is less of a problem because resources can be adjusted when needed; however, it’s worth noting that large-scale cloud capacity requires significant investment.
When database migration becomes necessary in healthcare projects?
Migration is usually not about innovation, but about risk.
It becomes necessary when a database is no longer supported, when security issues start to appear, or when it becomes difficult to maintain the system because there are fewer specialists who can work with the existing technology.
Another common case is when the system grows beyond what the original database choice can handle.
What database selection decisions tend to create problems later?
A typical issue is choosing a database because it is quick to start with.
This works well at the beginning. But as the system grows, limitations start to show up. Queries become harder to optimize, integrations require workarounds, and the overall architecture becomes less stable.
At that point, migration becomes unavoidable, and that is where complexity and cost increase.
When to use automated migration tools like SQLWays, and when to rebuild manually?
Automated tools such as Ispirer SQLWays are especially useful for cloud database migration and are also valuable when time is limited and the goal is to move the system without changing its logic too much.

They help in cases where documentation is missing or incomplete, and where the system has evolved over time without a clear structure. In those situations, automated migration allows you to move faster and keep the system operational.
Manual rework makes more sense when the system has accumulated a lot of technical debt or when there is a need to redesign the architecture.
In practice, teams often combine both approaches. Automated migration is used to move the system, and then specific parts are improved manually, for example as part of our database migration service.
How to ensure data integrity and security during database migration?
A safe migration process relies on a few key practices.
Data need to be validated after transfer to make sure everything has been moved correctly. The process should run inside a secure environment, ideally within the client’s infrastructure.
It is also important to avoid unnecessary intermediate steps and stick to an approach where data moves directly from source to target and standard encryption mechanisms are used during transfer.
With tools like SQLWays, this can be done in a controlled environment without exposing data externally.
Databases are only part of the system
A well-designed database is important, but it does not define the system on its own. Let’s discuss backend tech stacks for healthcare IT software developers – the way it is structured has just as much impact on how the product evolves.
Part 2. How to approach healthcare backend application architecture
Oleg Shkalenko, Ispirer application migration expert
How to choose a backend stack for a healthcare product?
In practice, this usually comes down to a balance between team capabilities and product needs.
If there is already a team, it makes sense to use technologies they are comfortable with. If not, then the availability of specialists becomes a real constraint.
The ecosystem also matters. Some projects are naturally tied to certain platforms, while others need more flexibility.
On top of that, healthcare systems often have specific requirements around integrations and data processing, so these factors should be considered early.
What backend decisions are critical to get right early?
Some things are difficult to fix once the system is already in use.
Architecture should reflect real requirements, not assumptions. Data handling needs to be thought through, including how queries will work and how data volumes may grow.
And just as important, the team needs a clear understanding of what the product is supposed to do. When that is missing, technical decisions tend to shift over time.
What backend architecture decisions tend to cause problems later?
Problems usually appear when the architecture does not match the system.
Sometimes systems stay too simple for too long, and that makes scaling difficult later. In other cases, complexity is introduced too early, and that slows down development.
Both situations create friction when the system grows or integrates with other platforms.
How to decide whether microservices are actually needed?
Microservices are useful when the system becomes complex and different parts need to evolve independently.
But splitting everything into small services without a clear reason usually makes things worse. Communication becomes harder, testing takes more effort, and support becomes more complicated.
The decision should come from system boundaries, not from trends.
What complicates integration with EHR/EMR systems?
In many cases, the main difficulty comes from the existing systems.
Legacy platforms may be built on outdated technologies, may lack documentation, or may not follow patterns that align with modern systems. This creates additional work during integration.
Looking at the existing environment early helps avoid surprises later.
When to introduce medical data interoperability standards like FHIR?
It is much easier to account for interoperability standards in healthcare at the architecture design stage.
If they are postponed, the system gradually accumulates constraints that make integration harder. Adding standards later often requires changes across multiple parts of the system .
What security measures should be implemented from the beginning?
Even early-stage systems need a basic level of security.
Authentication and access control should be implemented from the start. Sensitive data needs to be encrypted and stored properly to ensure HIPAA-compliant app development. Backup mechanisms should be in place.
In many cases, adding two-factor authentication is also a good idea, especially in healthcare.
Security is much harder to introduce later if it is not considered early.
When to use tools like Ispirer CodeWays, and when to rebuild manually?
Tools such as Ispirer CodeWays are useful when an existing system needs to be moved to a new stack without a full rewrite.

This helps save time and cost, and allows teams to keep the existing business logic intact. It is especially useful when the system still works, but the technology is outdated.
Manual rewriting makes more sense when the system no longer fits the product or when a new architecture is needed.
In many cases, a combined approach works best: automated conversion first, followed by targeted improvements.
Final thoughts
Healthcare systems are not easy to change once they are in use. They support real processes, real organizations, and real patients, which makes any major technical shift more complex and more risky than in many other domains.
That is why early decisions around databases and backend architecture matter so much. They influence how the system scales, how it integrates, and how difficult it will be to evolve in the future.
We hope this material helps you approach these decisions with more clarity and avoid some of the common pitfalls that teams run into along the way.