AngularJS (1.x) was once a very popular front-end framework, and many applications built with it still run smoothly today.
As technology evolves, teams want to move to modern Angular (2+) for its TypeScript support, cleaner architecture, better tools, and long-term maintenance.
However, rewriting a large AngularJS project from scratch can be time-consuming and risky.
That’s why many developers choose to run AngularJS and Angular together in a hybrid setup — this approach saves time and costs while still ensuring an effective migration process and keeping the system running normally.
To make AngularJS and Angular work together, the Angular team released an official package called @angular/upgrade.
It acts as a bridge between the two frameworks, allowing them to share the same DOM, services, and data.
You can install it easily:
npm install @angular/upgrade @angular/upgrade-static |
With this tool, you can:
This is an official and stable migration solution, fully supported by the Angular team — not a workaround or a temporary solution.
Step 1: Bootstrap Both Frameworks
In your main entry file, initialize Angular and AngularJS to run together:
|
|
Step 2: Downgrade an Angular Component
Suppose you have an Angular component like this:
@Component({ selector: 'hello-ng', template: 'Hello from Angular' })export class HelloNgComponent {} |
You can make it available inside AngularJS templates:
|
|
Now you can use it directly in AngularJS HTML:
<hello-ng></hello-ng> |
Step 3: Upgrade an AngularJS Service
You can also reuse existing AngularJS services inside Angular:
angular.module('hybridApp').service('LegacyService', function() { this.getData = () => 'data from AngularJS';}); |
@Injectable({ providedIn: 'root' })export class LegacyAdapter { constructor(@Inject('LegacyService') private legacy: any) {} getData() { return this.legacy.getData(); }} |
Step 4: Split Routing Clearly
Keep routing for both frameworks separate to prevent conflicts:
Use ngRoute or ui-router for AngularJS pages.
Use @angular/router for Angular modules.
Define clear URL boundaries, for example:
/legacy/* handled by AngularJS
/app/* handled by Angular
This ensures smooth navigation and stable behavior, while you continue upgrading parts of the application step by step.
Running AngularJS and Angular together may sound complicated, but with the official upgrade tools, it’s actually quite manageable.
This approach offers several key benefits:
No need to rewrite the entire application.
Safe, gradual migration — one module at a time.
Full compatibility with your existing system.
Freedom to create new features using modern Angular.
While this hybrid setup isn’t meant to be permanent, it serves as a practical bridge between old and new technologies, helping you modernize your app step by step without breaking what already works.
Whether you need scalable software solutions, expert IT outsourcing, or a long-term development partner, ISB Vietnam is here to deliver. Let’s build something great together—reach out to us today. Or click here to explore more ISB Vietnam's case studies.
[References]
https://v17.angular.io/guide/upgrade
June 12, 2026
In modern web application development, interacting with a database is a core requirement. Spring Boot integrates seamlessly with Spring Data JPA, providing a robust way to manage data persistence with significantly less code. This section explains Spring Data JPA, how it works, practical examples, and its benefits.
Spring Data JPA is a powerful framework that helps you:
By adding the spring-boot-starter-data-jpa dependency, Spring Boot configures a production-ready data layer automatically.
Spring Data JPA acts as an abstraction layer on top of JPA (Java Persistence API) and Hibernate:
1. Add Dependency
Maven:
|
|
Gradle:
|
|
2. Define an Entity
An Entity represents a table in your database:
|
|
3. Create a Repository Interface
By extending JpaRepository, you gain access to all standard CRUD operations.
|
|
Managing products in a Service layer:
|
|
When calling productRepository.findAll(PageRequest.of(0, 10)), Spring Data JPA handles the SQL "LIMIT" and "OFFSET" logic behind the scenes.
Spring Data JPA allows you to manage your application's data layer with elegance and efficiency. It removes the burden of repetitive data access code, allowing developers to focus on building features rather than debugging SQL strings.
Whether you need scalable software solutions, expert IT outsourcing, or a long-term development partner, ISB Vietnam is here to deliver. Let’s build something great together—reach out to us today. Or click here to explore more ISB Vietnam's case studies.
[References]
https://spring.io/projects/spring-data-jpa
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
https://www.baeldung.com/the-persistence-layer-with-spring-data-jpa
June 12, 2026
First, many data apps use sync jobs. Therefore, letting users send CSV files straight to S3 is smart. In addition, this setup splits the UI from background tasks. As a result, direct uploads boost both speed and trust.
Moreover, this guide shows how direct transfers work. Furthermore, we look at common setups and safe rules. Also, you will learn about CORS and React code.
June 12, 2026
After completing the AZ‑900 certification, I realized that Microsoft Azure is far more than a cloud platform—it’s a well‑designed ecosystem built to support modern applications at scale. In this article, I’ll introduce Azure using the same structured framework I studied for AZ‑900, but with a stronger focus on practical, real‑world understanding from a developer’s perspective.
Before deploying anything, it is essential to understand what cloud computing actually provides.
Microsoft Azure is a cloud computing platform developed by Microsoft that offers on-demand computing resources over the internet. Instead of managing physical servers, developers provision infrastructure and services dynamically.
Azure services are generally categorized into three cloud models:
Even though SaaS offers the least customization, it’s also the simplest and fastest model to adopt. It requires minimal technical skill because all updates, maintenance, and infrastructure responsibilities are handled for you.
Example: Microsoft 365.
Azure’s networking services provide the core connectivity that allows your cloud resources to communicate securely and efficiently. At the foundation are services like Virtual Networks (VNets), Private Link, Azure DNS, Bastion, Route Server, NAT Gateway, and Traffic Manager, which together create a customizable and secure network environment for your applications. These tools let you isolate workloads, manage routing, control inbound and outbound traffic, and connect on‑premises networks to Azure.
Beyond basic connectivity, Azure also offers load balancing and content delivery capabilities—such as Load Balancer, Application Gateway, and Azure Front Door—to distribute traffic, improve performance, and ensure high availability. These services help optimize how applications respond to user requests, whether they’re internal workloads or global web applications.
Security is built into the networking layer through features like network security groups, firewalls, and private endpoints, allowing you to tightly control which resources can communicate and how that communication happens.
Azure Storage is Microsoft’s cloud‑based platform for storing and managing data at massive scale. It’s designed to be highly available, durable, secure, and globally accessible, making it suitable for everything from simple file storage to large‑scale analytics workloads. Azure Storage supports multiple data types and offers tools that developers and IT teams can use from anywhere via HTTP/HTTPS and REST APIs.
Core Characteristics:
Azure maintains extra copies of your data to ensure availability and durability, even when failures occur. These failures can include hardware issues, power or network outages, or natural disasters. Choosing a redundancy option is a balance between cost, performance, and resilience.
These options keep your data inside a single Azure region.
- Locally Redundant Storage (LRS) — Your data is copied three times within a single datacenter. It’s the most cost‑effective option but doesn’t protect against a full datacenter outage.
- Zone‑Redundant Storage (ZRS) — Your data is stored across three separate availability zones within the same region. This protects against datacenter‑level failures while staying within one region.
These options replicate your data to a geographically distant secondary region.
- Geo‑Redundant Storage (GRS) — Your data is stored three times in the primary region (like LRS) and then copied to a secondary region for disaster recovery.
- Read‑Access Geo‑Redundant Storage (RA‑GRS) — Same as GRS, but you can read from the secondary region. This improves availability during regional outages.
Azure security and identity in the cloud revolve around protecting access to resources through strong authentication, authorization, and continuous threat-aware controls. At the center of this model is Microsoft Entra ID, which provides identity management, single sign‑on, multifactor authentication, and role‑based access control to ensure that only the right people and applications can reach the right resources.
Azure security concepts center on protecting identities, data, applications, and infrastructure through a multilayered, defense‑in‑depth approach. This model combines built‑in platform protections, shared responsibility between Microsoft and customers, and advanced security services that detect and respond to threats. Azure emphasizes securing every layer—from physical datacenters to identities, networks, and workloads—because cloud environments face constantly evolving cyber risks.
Azure applies multiple layers of protection across physical, network, identity, application, and data layers. If one layer is compromised, others continue to protect the environment. This includes secure datacenters, network segmentation, identity controls, encryption, and monitoring.
Zero Trust treats every network—internal or external—as untrusted, so no user or device is assumed safe by default. It follows the idea of “never trust, always verify,” meaning every access request must be authenticated, authorized, and continuously validated before anything is granted.
One way to mitigate against common cybersecurity threats is to encrypt sensitive or valuable data. Encryption is the process of making data unreadable and unusable to unauthorized viewers. To use or read encrypted data, it must be decrypted, which requires the use of a secret key.
Microsoft secures the physical infrastructure, hosts, and foundational services, while customers secure their identities, data, applications, and configurations. Understanding this division is essential for building a secure cloud environment.
Identity management ensures that every user, device, or application accessing Azure resources is properly authenticated and authorized. Microsoft Entra ID acts as the cloud identity provider, extending on‑premises Active Directory to the cloud and enabling unified access across thousands of SaaS and on‑premises applications.
SSO allows users to sign in once and access multiple applications without repeatedly entering credentials. This reduces password fatigue and improves security by minimizing exposed credentials. Entra ID supports SSO for a wide range of cloud and on‑premises apps.
MFA adds a second verification step—such as an authenticator app, biometric sign‑in, or security key—to strengthen protection against unauthorized access. It provides a critical extra layer of defense while keeping the sign‑in experience smooth.
RBAC assigns permissions based on roles rather than individual accounts, ensuring users only have the access they need. This supports the principle of least privilege and helps reduce accidental or malicious misuse of resources.
Azure identity and security services also support modern frameworks such as Zero Trust and conditional access, which evaluate user identity, device health, location, and risk signals before granting access. These approaches help organizations defend against evolving threats.
You are billed based on actual consumption with no upfront commitment. This is ideal for workloads that change frequently because you can scale resources up or down instantly.
You commit to using a service (such as virtual machines or databases) for one or three years in exchange for a lower price. This is best for predictable, always‑on workloads.
You use unused Azure capacity at a steep discount, with the understanding that Azure can reclaim the resources at any time. This works well for batch jobs, testing, or workloads that can tolerate interruptions.
What affects cost
These factors allow organizations to tailor spending to their technical and financial goals.
Azure resources can automatically scale based on demand. This prevents overprovisioning and reduces wasted cost.
Azure’s worldwide datacenter network lets you run applications close to users, improving performance and offering redundancy options.
Most Azure services offer different performance levels, allowing you to choose between cost‑optimized or high‑performance configurations.
Azure provides budgeting, monitoring, and optimization tools to help track spending and identify savings opportunities.
Studying for AZ-900 was not just about passing an exam. It helped me structure cloud knowledge into:
More importantly, it shifted my mindset from “managing servers” to “designing scalable systems.”
Microsoft Azure is not just a collection of cloud services. It is a comprehensive ecosystem designed to support modern software architectures — from startups to global enterprises.
For developers transitioning from traditional infrastructure or embedded systems to cloud-native environments, Azure provides a structured path forward.
Earning AZ-900 was only the beginning. The real value comes from applying these concepts in real-world architectures.
Ready to get started?
Contact IVC for a free consultation and discover how we can help your business grow online.
Contact IVC for a Free ConsultationReferences:
At ISB Tech Insights, we maintain an open channel for both professional inquiries and information exchange.
If you would like to connect with our team regarding services, relevant industry updates, or other organizational matters, please contact us via our form.