Azure Healthcare API (previously API for FHIR)
Author: Ronald Fung
Creation Date: 25 May 2023
Next Modified Date: 25 May 2024
A. Introduction
Azure Functions is a serverless solution that allows you to write less code, maintain less infrastructure, and save on costs. Instead of worrying about deploying and maintaining servers, the cloud infrastructure provides all the up-to-date resources needed to keep your applications running.
You focus on the code that matters most to you, in the most productive language for you, and Azure Functions handles the rest.
We often build systems to react to a series of critical events. Whether you’re building a web API, responding to database changes, processing IoT data streams, or even managing message queues - every application needs a way to run some code as these events occur.
To meet this need, Azure Functions provides “compute on-demand” in two significant ways.
First, Azure Functions allows you to implement your system’s logic into readily available blocks of code. These code blocks are called “functions”. Different functions can run anytime you need to respond to critical events.
Second, as requests increase, Azure Functions meets the demand with as many resources and function instances as necessary - but only while needed. As requests fall, any extra resources and application instances drop off automatically.
Where do all the compute resources come from? Azure Functions provides as many or as few compute resources as needed to meet your application’s demand.
Providing compute resources on-demand is the essence of serverless computing in Azure Functions.
B. How is it used at Seagen
As a biopharma research company, there are several ways you could use Azure Functions to enhance your work on Microsoft Azure. Here are some potential use cases:
Data processing and analysis: Azure Functions can be used to process and analyze large volumes of data generated by your research projects. You can use Azure Functions to automate the processing and analysis of data, and trigger further actions based on the results.
Integration with other Azure services: Azure Functions can be used to integrate your research workflows with other Azure services, such as Azure Machine Learning, Azure Cognitive Services, and Azure Data Factory. This can help you to build more complex and powerful research workflows.
Event-driven workflows: Azure Functions can be used to build event-driven workflows that respond to specific triggers, such as changes to a database or a file upload. This can help you to automate your research workflows and improve efficiency.
Webhooks and APIs: Azure Functions can be used to build webhooks and APIs that enable you to interact with your research data and workflows programmatically. This can help you to build custom applications and interfaces that are tailored to your specific needs.
Integration with external systems: Azure Functions can be used to integrate your research workflows with external systems, such as laboratory equipment and data repositories. This can help you to streamline your research workflows and improve collaboration with external partners.
Overall, Azure Functions can be a powerful tool for biopharma research companies like Seagen, enabling you to build more efficient and effective research workflows, integrate with other Azure services, and automate data processing and analysis.
C. Features
Azure Functions is a serverless compute service that allows developers to build and run event-driven applications and services without having to manage infrastructure. Here are some of the key features of Azure Functions:
Event-driven compute: Azure Functions enables developers to build applications and services that respond to events, such as changes to a database, a file upload, or a message from a queue. This makes it well-suited to building event-driven applications.
Serverless architecture: Azure Functions is a serverless compute service, which means that developers don’t have to manage infrastructure or worry about scaling. Azure Functions automatically scales to meet demand and charges only for the compute resources used.
Variety of supported languages: Azure Functions supports a variety of programming languages, including C#, Java, JavaScript, PowerShell, Python, and TypeScript. This gives developers the flexibility to choose the language that best suits their needs.
Integration with other Azure services: Azure Functions integrates with other Azure services, such as Azure Event Grid, Azure Cosmos DB, and Azure Logic Apps. This makes it easy to build complex workflows and applications that span multiple services.
Triggers and bindings: Azure Functions provides triggers and bindings that allow developers to respond to events and interact with other services. Triggers can be used to initiate a function, while bindings allow the function to interact with other services, such as storing data in a database or sending a message to a queue.
Easy deployment and management: Azure Functions can be easily deployed and managed through the Azure portal, Azure CLI, or Azure DevOps. This makes it easy to manage functions and deploy updates.
Testing and debugging: Azure Functions provides testing and debugging tools that enable developers to test functions locally and debug issues.
Overall, Azure Functions is a powerful compute service that enables developers to build event-driven applications and services quickly and easily, without having to manage infrastructure. With its variety of supported languages, integration with other Azure services, and easy deployment and management, Azure Functions is a popular choice for building serverless applications.
D. Where Implemented
E. How it is tested
Testing Azure Functions is an important step in ensuring that your application or service is functioning as expected. Here are some steps you can take to test Azure Functions:
Unit testing: Unit testing involves testing each individual function to ensure that it’s functioning as expected. You can use a testing framework, such as NUnit or xUnit, to write and run unit tests for your functions.
Integration testing: Integration testing involves testing how your functions interact with other services or components of your application. You can use tools such as Postman or Newman to test your functions’ HTTP triggers and bindings, or use Azure Functions’ built-in integration testing support to test event triggers and bindings.
Load testing: Load testing involves testing your functions under a simulated load to ensure that they can handle the expected volume of requests. You can use tools such as Apache JMeter or Locust to simulate a high volume of requests to your functions and monitor their performance.
End-to-end testing: End-to-end testing involves testing your entire application or service, including all functions and dependencies. You can use tools such as Selenium or Cypress to automate end-to-end testing of your application or service.
Security testing: Security testing involves testing your functions for potential vulnerabilities or security issues. You can use tools such as OWASP ZAP or Burp Suite to test your functions for common security issues, such as injection attacks or cross-site scripting.
Overall, testing Azure Functions involves a combination of unit testing, integration testing, load testing, end-to-end testing, and security testing. By following these steps, you can ensure that your functions are functioning as expected, performing well under load, and are secure.
F. 2023 Roadmap
????
G. 2024 Roadmap
????
H. Known Issues
As with any technology, Azure Functions may encounter issues or limitations that can affect its performance or functionality. Here are some known issues and limitations that you should be aware of when using Azure Functions:
Cold start latency: Azure Functions runs on a consumption-based pricing model, which means that functions may experience a cold start delay when they’re invoked for the first time. This can result in increased latency for initial requests.
Scalability limitations: While Azure Functions can scale quickly and automatically to meet demand, there may be limitations to how many instances can be spun up at once. This can result in slower performance or errors during periods of high demand.
Storage constraints: Azure Functions may encounter storage constraints, particularly when processing and storing large volumes of data. This can result in slower performance or errors.
Limited execution time: Azure Functions have a maximum execution time of 10 minutes, which can be a limitation for long-running tasks or batch processing jobs.
Limited support for certain languages and frameworks: While Azure Functions supports a variety of programming languages and frameworks, there may be limitations to the level of support or compatibility for certain languages or frameworks.
Debugging and logging limitations: Debugging and logging functions can be challenging in Azure Functions, particularly when dealing with distributed systems or complex workflows.
Overall, it’s important to be aware of these known issues and limitations when using Azure Functions. By understanding these limitations and working around them, you can ensure that your use of Azure Functions is effective and provides value to your organization.
[x] Reviewed by Enterprise Architecture
[x] Reviewed by Application Development
[x] Reviewed by Data Architecture