beta
hURL
By: Michał J. Gajda
Introduction
Browsing through Web API(Kopecký, Fremantle, and Boakes 2014) documentation can be laborious work. There are hundreds of endpoints, and the unavoidable difficulty in manipulating these moving parts grows larger per the capacities of the project at hand. Often developers must build libraries for multiple Web APIs,(Alrashed 2021) which compounds valuable time and energy lost reinventing the wheel.
Scaling projects come with technical problems, many from human-prone errors, but the greater majority from these technical hindrances; multiple languages syntax, libraries, dependencies, and SDKs (software dev kit)(Edney and Maximo 2007) not supporting many languages. Building a large project with growing features that scale across mediums and support a large customer base requires multiple cloud services working together. Manipulating these different cloud services is much easier with hURL(Araujo, Barrozzi, and Gajda 2022; Michał J. Gajda 2021; Michal Gajda 2022).
What Is hURL
hURL is an IaaC (infrastructure as a code) that solves the problem of library interoperability by providing a retargetable cloud service API binding generator(AWS 2022). The software creates code fragments to bind the numerous cloud services in its library a project might use together, including Scala, Haskell, and Java, giving developers a chance to manipulate them(Hunt 2014; Mena 2019; Winnie 2021). Implemented in Haskell, hURL utilizes type classes and a code generation monad to generate library bindings and allow large-scale changes at an unprecedented speed. It easily binds many web stacks, libraries, and languages.
Problems hURL Solves
Interoperability of Multiple Cloud Services
Large-scale web services use multiple cloud microservices to run and maintain basic functionality; for instance, Cloudflare for domain management and Amazon S3 for storing assets. In most cases, these services don't support multiple platforms, and the ensuing problem becomes moving between these services for a better overall experience (Cloud APIs use complex calling conventions that would make building libraries for each language a complicated venture).
Poor API Documentation
REST APIs(Doglio 2015) are essential to web services because they enable secure communication between different computers over the internet. Every cloud service utilizes these APIs, but only some offer sufficient documentation on the proper syntax, with examples to help developers use the APIs.
Tech Stack Inertia
Building a cloud service requires much time, building libraries, integrating cross-platform functions, and more. Deployed Cloud services also occasionally require updates for additional features or to address a bug. It's also in the developers' best interest that these changes occur rapidly to protect their customer base.
Poor API support from vendors
Most vendors need to provide proper API support. Most use ad hoc REST APIs with insufficient documentation and expect users to write SDKs basically from scratch. Some cloud services are advertised as "no code" and not required to come with any SDK, which presents a problem for developers.
Benefits Of Using hURL
For Businesses
As businesses and their marketplaces go digital at an increasing pace, it becomes imperative for their web techniques to expand up to designing landing pages for their products and dashboards to portray the goods and services they offer. This need also implies an increased usage of cloud services which may pose flexibility and agility problems, especially if they employ the increasingly more popular multi-cloud data management system. These services run provisions with different languages and a wide array of features that may implicate the security of these businesses on the webspace.
hURL, in this scenario, is the cloud service that proffers data management solutions to these businesses. It binds coding languages with a convenient translator that acts as a streamliner to web monitors and, as a result, facilitates quicker modulations across these multi-cloud systems in an unprecedented but beneficial manner. The easy scalability of these data management methods means a business can add many codes to its base scheme in less time than it currently does.
Some other benefits of hURL for businesses are:
- Easier Scaling
- Scaling API bindings has become a difficulty of the past with this ingenious tool that makes multiple API integration maintenance and expansion much easier.
- Easily Retargetable
- hURL is intuitively designed to generate binders for multiple languages. The IaaC goes further and can output code in whatever format is required per the task.
For CTOs
hURL helps CTOs become more effective in their management duties. Its translation tools allow anyone to enter data and input code in any language. This feature makes it easier for the CTO and their staff to get work done. The most indispensable feature is the Universal Resource Identifier (URI)(Rodriguez et al. 2016) feature that aids seamless identification of coded features that might otherwise be overlooked or require further communication between the CTO and provider of the line under query[. In a data management squad consisting of remotely-linked members, the tendency of error in the combination of protocols from multiple units due to poor carryover of information from one system to another.
This feature allows seamless integration of data from the core system a CTO manages without concerns about a miscarriage of code entries. The added ease allows for more effective administration by the CTO and fewer errors in data integration and grants more flexibility in the manner that the administrator wishes to implement certain features into the core system.
The reduced error margin is another reason to incorporate hURL usage. The program pipeline scrapes, parses, and then generates a functional binder easily instead of handling separate languages individually, which can be a very complicated venture.
Thousands of API calls are available
Cloud APIs have some of the most complex call conventions known to man. hURL collects a cache of call conventions from its users' entries and grants developers access to the collected data, all from one place and without unnecessary complexity.
Tech Stack Agility
Overall, hURL seeks to achieve increased tech agility for developers by enabling them the necessary functionality to use any library or language for various purposes to reduce dependencies and speed up the entire development process.
Reduced Code Base Size
Using hURL reduces the volume of code required for a project to run by reducing the amount of iteration required per library or SDK. Overall, hURL makes for very efficient coding and a lighter code base.
Combining the Best Available Microservices
hURL helps developers combine the best of different microservices and vendors seamlessly across multiple languages with minimal repetition. .
Implementation
To explain, hURL functions in three main stages, scraping, parsing, and code generating. First, the developer enters the URL of the cloud API into hURL's crawlers that scrape the web pages, extract valuable information that is converted to CSV(Browning and Alchin 2014), then parsed and analyzed by Haskell. Finally, code is generated and retargeted to other languages besides Haskell. The processing pipeline is also easily integrated for any desired language upon request. The pipeline uses state-of-art data analytics methodology that assures a low error rate(Michal Gajda 2020).
Conclusion
The number of available web services on the internet continues to grow exponentially. Although the IaaC has barely been around for a year, it's actively supported by its team of brilliant developers. With multiple features tailored to the users' needs, developers are vested in creating the best experience possible. hURL is a tool built by developers to help developers efficiently integrate these many web services quickly and at scale.
References
Alrashed, Tarfah. 2021. “Systems to Democratize and Standardize Access to Web APIs.” In The Adjunct Publication of the 34th Annual ACM Symposium on User Interface Software and Technology, 158–61. UIST ‘21. New York, NY, USA: Association for Computing Machinery. https://doi.org/10.1145/3474349.3477587.
Araujo, Gabriel, Vitor Vitali Barrozzi, and Michał J. Gajda. 2022. “Multicloud API Binding Generation from Documentation.” In Intelligent Computing, edited by Kohei Arai, 171–77. Cham: Springer International Publishing.
AWS. 2022. “What Is Infrastructure as a Service? IaaS Explained - AWS.” Amazon Web Services, Inc. https://aws.amazon.com/what-is/iaas/.
Browning, J. Burton, and Marty Alchin. 2014. “Sheets: A CSV Framework.” In Pro Python: Second Edition, 269–316. Berkeley, CA: Apress. https://doi.org/10.1007/978-1-4842-0334-7_11.
Doglio, Fernando. 2015. “Rest 101.” In Pro REST API Development with Node.js, 1–24. Berkeley, CA: Apress. https://doi.org/10.1007/978-1-4842-0917-2_1.
Edney, Andrew, and Rui Maximo. 2007. “The SDK.” In. https://doi.org/10.1007/978-1-4302-0249-3_20.
Gajda, Michal. 2020. “Agile Data Pipelines: ETL for 2020.” In. DSC Europe 2020. https://www.youtube.com/watch?v=aHAc8ght9Gw.
———. 2022. “Agile Generation of Cloud API Bindings with Haskell.” In. Haskell Love. https://www.youtube.com/watch?v=KY27LsV11Rg.
Gajda, Michał J. 2021. “Multicloud Bindings from Web Page.” In. Lambda Days Virtual. https://www.youtube.com/watch?v=raYdRRPisAk.
Hunt, John. 2014. “Scala Background.” In A Beginner’s Guide to Scala, Object Orientation and Functional Programming, edited by John Hunt, 39–42. Cham: Springer International Publishing. https://doi.org/10.1007/978-3-319-06776-6_6.
Kopecký, Jacek, Paul Fremantle, and Rich Boakes. 2014. “A History and Future of Web APIs.” It - Information Technology 56 (January). https://doi.org/10.1515/itit-2013-1035.
Mena, Alejandro. 2019. Practical Haskell: A Real World Guide to Programming. https://doi.org/10.1007/978-1-4842-4480-7.
Rodriguez, Carlos, Marcos Baez, Florian Daniel, Fabio Casati, Juan Carlos Trabucco, Luigi Canali, and Gianraffaele Percannella. 2016. “REST APIs: A Large-Scale Analysis of Compliance with Principles and Best Practices.” In Web Engineering, edited by Alessandro Bozzon, Philippe Cudre-Maroux, and Cesare Pautasso, 21–39. Cham: Springer International Publishing.
Winnie, Doug. 2021. “How Java Works.” In Essential Java for AP CompSci: From Programming to Computer Science, 19–22. Berkeley, CA: Apress. https://doi.org/10.1007/978-1-4842-6183-5_6.