The API pattern bind IO functionality to business functionality by binding IO state either through annotation (ie JAX) or by extending a RestfulController. As a result, the data associated IO State cannot be shared with the architectural instances because it is bound to the controller. This creates architectural cross cutting concerns not only with the functionality but also with the data. By abstracting the functionality, we can create a versioned data object for IO state that can be shared,cached,synced,reloaded on the fly for all architectural instances without having to restart any instance. This greatly improve automation, performance and flow of api applications and architecture.
The API pattern was created in the 1970's when 'distributed architectures' didn't even exist and was established mainly for 'centralized architectures' as it bound the communication data/logic to the business logic.
In a modern world, we have moved to distributed architectures where we now have to share the I/O... but that communication logic still remains bound in the application due to an old API pattern. This makes it so that the IO data and functionality related to a request/response cannot be shared with our edge services without duplication/entanglement. This in turn means the data/functionality in our services then cannot be synchronized.
This leads to dropped threads, poor security, bad data, bad user experience, broken application, etc.
This can ALL be fixed and improved and even lead to better speed, scalability and automation through a new API Pattern.
The old API Pattern was designed in the 70's for centralized architectures and binds it's communication logic to it's business logic so that I/O cannot be shared with other services in an architecture without duplication.
We will show a new API Pattern that fixes this issues by abstraction the communication layer away from business logic thus enabling sharing of I/O, better scale, less code, and faster processing as well as many other things.
API abstraction is the separation of cross cutting concerns related to the api to better enable externalization to architectural concerns. Not only does this enable easier externalization, synchronization and sharing of the environment with external architecture but this also enables us to reload the api configuration on the fly, have DRY'r code, easier batching, api chaining, reduced code, synchronized configuration/security, reduced throughput and much more.
Video Available here : http://java.dzone.com/articles/springone2gx-2014-replay-api
How to migrate an application in IBM APIc, and preserve its client credentialShiu-Fun Poon
This provides the rest and toolkit command on how to migrate an application from one environment to another without know the client_secret in the plaintext format.
Swagger APIs for Humans and Robots (Gluecon)Tony Tam
Presentation to Gluecon 2014 about Swagger for API development and adoption of services. Reverb also announced the Swagger 2.0 Working Group, with Apigee as a founding member
[Workshop] API Management in Microservices ArchitectureWSO2
This deck on WSO2 API Management focuses on the latest microgateway offering. The session will discuss features, benefits of using microgateway and patterns of usage.
Check out our upcoming workshops: https://wso2.com/events/workshops/
The API pattern was created in the 1970's when 'distributed architectures' didn't even exist and was established mainly for 'centralized architectures' as it bound the communication data/logic to the business logic.
In a modern world, we have moved to distributed architectures where we now have to share the I/O... but that communication logic still remains bound in the application due to an old API pattern. This makes it so that the IO data and functionality related to a request/response cannot be shared with our edge services without duplication/entanglement. This in turn means the data/functionality in our services then cannot be synchronized.
This leads to dropped threads, poor security, bad data, bad user experience, broken application, etc.
This can ALL be fixed and improved and even lead to better speed, scalability and automation through a new API Pattern.
The old API Pattern was designed in the 70's for centralized architectures and binds it's communication logic to it's business logic so that I/O cannot be shared with other services in an architecture without duplication.
We will show a new API Pattern that fixes this issues by abstraction the communication layer away from business logic thus enabling sharing of I/O, better scale, less code, and faster processing as well as many other things.
API abstraction is the separation of cross cutting concerns related to the api to better enable externalization to architectural concerns. Not only does this enable easier externalization, synchronization and sharing of the environment with external architecture but this also enables us to reload the api configuration on the fly, have DRY'r code, easier batching, api chaining, reduced code, synchronized configuration/security, reduced throughput and much more.
Video Available here : http://java.dzone.com/articles/springone2gx-2014-replay-api
How to migrate an application in IBM APIc, and preserve its client credentialShiu-Fun Poon
This provides the rest and toolkit command on how to migrate an application from one environment to another without know the client_secret in the plaintext format.
Swagger APIs for Humans and Robots (Gluecon)Tony Tam
Presentation to Gluecon 2014 about Swagger for API development and adoption of services. Reverb also announced the Swagger 2.0 Working Group, with Apigee as a founding member
[Workshop] API Management in Microservices ArchitectureWSO2
This deck on WSO2 API Management focuses on the latest microgateway offering. The session will discuss features, benefits of using microgateway and patterns of usage.
Check out our upcoming workshops: https://wso2.com/events/workshops/
The motivation on why and when to use API-First service design. What are the real-life poblems in application development with regard to API's ? And how to solve these using tools like Swagger Editor , Swagger UI and Swagger-codegen. And how can an API Manager tool help to manage the Apllication Lifecycle of your API ( publishing , versioning, registration of consumers , quota's and rate-limiting )
What do you mean by “API as a Product”?Nordic APIs
You may have heard the term “API Product.” But what does it mean? In this talk I will introduce the concept and explain the benefits and challenges of transforming your organization to view your APIs as measurable products that expose your companies capabilities creating agility, autonomy, and acceleration. Traditional product manufacturers create new product and launch them into the marketplace and then measure value; we will teach you to view your APIs in the same way. Concepts covered in this presentation will be designing APIs with Design Thinking, funding your product, building teams, marketing your API, managing your marketplace, and measuring success.
In this presentation, we provide an overview of Cloud Computing and provide some details on the wide range of services that Amazon Web Services offers today. This presentation is intended for people new to cloud computing or experienced cloud developers who have not yet used AWS.
Extend access and digitally transform existing data to new dynamic API cloud services. Increase speed to market. Drive innovation. Create new business models.
Introduction to Google Cloud Services / PlatformsNilanchal
The presentation provides a brief Introduction to Google Cloud Services and Platforms. In the course of this slide, we will introduce you the different Google cloud computing options, Compute Engine, App Engine, Cloud function, Databases, file storage and security features of Google cloud platform.
Training for AWS Solutions Architect at http://zekelabs.com/courses/amazon-web-services-training-bangalore/.This slide describes about features of EC2, EC2 Options, family type, storage, EBS Volumes, EC2 Instance Store, Security Groups, Volumes and Snapshots, Amazon Machine Image (AMI), Elastic load balancer, Classic load balancer, Application load balancer, Network load balancer, AWS CLI and EC2 Metadata
___________________________________________________
zekeLabs is a Technology training platform. We provide instructor led corporate training and classroom training on Industry relevant Cutting Edge Technologies like Big Data, Machine Learning, Natural Language Processing, Artificial Intelligence, Data Science, Amazon Web Services, DevOps, Cloud Computing and Frameworks like Django,Spring, Ruby on Rails, Angular 2 and many more to Professionals.
Reach out to us at www.zekelabs.com or call us at +91 8095465880 or drop a mail at info@zekelabs.com
Lattice: A Cloud-Native Platform for Your Spring ApplicationsMatt Stine
As presented at SpringOne2GX 2015 in Washington, DC.
Lattice is a cloud-native application platform that enables you to run your applications in containers like Docker, on your local machine via Vagrant. Lattice includes features like:
Cluster scheduling
HTTP load balancing
Log aggregation
Health management
Lattice does this by packaging a subset of the components found in the Cloud Foundry elastic runtime. The result is an open, single-tenant environment suitable for rapid application development, similar to Kubernetes and Mesos Applications developed using Lattice should migrate unchanged to full Cloud Foundry deployments.
Lattice can be used by Spring developers to spin up powerful micro-cloud environments on their desktops, and can be useful for developing and testing cloud-native application architectures. Lattice already has deep integration with Spring Cloud and Spring XD, and you’ll have the opportunity to see deep dives into both at this year’s SpringOne 2GX. This session will introduce the basics:
Installing Lattice
Lattice’s Architecture
How Lattice Differs from Cloud Foundry
How to Package and Run Your Spring Apps on Lattice
The motivation on why and when to use API-First service design. What are the real-life poblems in application development with regard to API's ? And how to solve these using tools like Swagger Editor , Swagger UI and Swagger-codegen. And how can an API Manager tool help to manage the Apllication Lifecycle of your API ( publishing , versioning, registration of consumers , quota's and rate-limiting )
What do you mean by “API as a Product”?Nordic APIs
You may have heard the term “API Product.” But what does it mean? In this talk I will introduce the concept and explain the benefits and challenges of transforming your organization to view your APIs as measurable products that expose your companies capabilities creating agility, autonomy, and acceleration. Traditional product manufacturers create new product and launch them into the marketplace and then measure value; we will teach you to view your APIs in the same way. Concepts covered in this presentation will be designing APIs with Design Thinking, funding your product, building teams, marketing your API, managing your marketplace, and measuring success.
In this presentation, we provide an overview of Cloud Computing and provide some details on the wide range of services that Amazon Web Services offers today. This presentation is intended for people new to cloud computing or experienced cloud developers who have not yet used AWS.
Extend access and digitally transform existing data to new dynamic API cloud services. Increase speed to market. Drive innovation. Create new business models.
Introduction to Google Cloud Services / PlatformsNilanchal
The presentation provides a brief Introduction to Google Cloud Services and Platforms. In the course of this slide, we will introduce you the different Google cloud computing options, Compute Engine, App Engine, Cloud function, Databases, file storage and security features of Google cloud platform.
Training for AWS Solutions Architect at http://zekelabs.com/courses/amazon-web-services-training-bangalore/.This slide describes about features of EC2, EC2 Options, family type, storage, EBS Volumes, EC2 Instance Store, Security Groups, Volumes and Snapshots, Amazon Machine Image (AMI), Elastic load balancer, Classic load balancer, Application load balancer, Network load balancer, AWS CLI and EC2 Metadata
___________________________________________________
zekeLabs is a Technology training platform. We provide instructor led corporate training and classroom training on Industry relevant Cutting Edge Technologies like Big Data, Machine Learning, Natural Language Processing, Artificial Intelligence, Data Science, Amazon Web Services, DevOps, Cloud Computing and Frameworks like Django,Spring, Ruby on Rails, Angular 2 and many more to Professionals.
Reach out to us at www.zekelabs.com or call us at +91 8095465880 or drop a mail at info@zekelabs.com
Lattice: A Cloud-Native Platform for Your Spring ApplicationsMatt Stine
As presented at SpringOne2GX 2015 in Washington, DC.
Lattice is a cloud-native application platform that enables you to run your applications in containers like Docker, on your local machine via Vagrant. Lattice includes features like:
Cluster scheduling
HTTP load balancing
Log aggregation
Health management
Lattice does this by packaging a subset of the components found in the Cloud Foundry elastic runtime. The result is an open, single-tenant environment suitable for rapid application development, similar to Kubernetes and Mesos Applications developed using Lattice should migrate unchanged to full Cloud Foundry deployments.
Lattice can be used by Spring developers to spin up powerful micro-cloud environments on their desktops, and can be useful for developing and testing cloud-native application architectures. Lattice already has deep integration with Spring Cloud and Spring XD, and you’ll have the opportunity to see deep dives into both at this year’s SpringOne 2GX. This session will introduce the basics:
Installing Lattice
Lattice’s Architecture
How Lattice Differs from Cloud Foundry
How to Package and Run Your Spring Apps on Lattice
My Personal DevOps Journey: From Pipelines to PlatformsVMware Tanzu
SpringOne Platform 2019
Session Title: My Personal DevOps Journey: From Pipelines to Platforms
Speaker: Jan Svoboda, Platform Architect, Pivotal
Youtube: https://youtu.be/wHS7S4Ll-3o
Managing the Complexity of Microservices DeploymentsVMware Tanzu
SpringOne Platform 2017
Prithpal Bhogill, Google; Kenny Bastani, Pivotal
"To rapidly deliver microservices to production, organizations are turning to infrastructure automation provided by a cloud-native platform, like Cloud Foundry. With a platform in place, every microservice team will have what they need to create a CI/CD pipeline that safely delivers applications to a production environment. The final ingredient for success is knowing the right patterns for connecting microservices together over HTTP using REST APIs.
In this session, Kenny Bastani from Pivotal and Prithpal Bhogill from Google dive into a reference architecture that demonstrates the patterns and practices for securely connecting microservices together using Apigee Edge integration for Pivotal Cloud Foundry.
This session covers:
Basics for building cloud-native applications as microservices on Pivotal Cloud Foundry using Spring Boot and Spring Cloud Services
Patterns and practices that are enabling small autonomous microservice teams to provision backing services for their applications
How to securely expose microservices over HTTP using Apigee Edge for PCF"
This is your one stop shop introduction to get oriented to the world of reactive programming. There are lots of such intros out there even manifestos. We hope this is the one where you don't get lost and it makes sense. Get a definition of what "reactive" means and why it matters. Learn about Reactive Streams and Reactive Extensions and the emerging ecosystem around them. Get a sense for what going reactive means for the programming model. See lots of hands-on demos introducing the basic concepts in composition libraries using RxJava and Reactor.
This is your one stop shop introduction to get oriented to the world of reactive programming. There are lots of such intros out there even manifestos. We hope this is the one where you don't get lost and it makes sense. Get a definition of what "reactive" means and why it matters. Learn about Reactive Streams and Reactive Extensions and the emerging ecosystem around them. Get a sense for what going reactive means for the programming model. See lots of hands-on demos introducing the basic concepts in composition libraries using RxJava and Reactor.
Project Riff는 Kubernetes 기반의 함수형 서비스로 스크립트, Node.js, Spring Cloud Function로 작성된 함수를 이벤트 발생시 실행 할 수 있습니다. Riff 상에 Spring Cloud Function을 사용하여 Serverless Spring을 사용하는 방법에 대해서 살펴봅니다.
12 Factor, or Cloud Native Apps – What EXACTLY Does that Mean for Spring Deve...cornelia davis
Talk given at SpringOne 2015
The third platform, characterized by a fluid infrastructure where virtualized servers come into and out of existence, and workloads are constantly being moved about and scaled up and down to meet variable demand, calls for new design patterns, processes and even culture. One of the most well known descriptions of these new paradigms is the Twelve Factor App (12factor.net), which describes elements of cloud native applications. Many of these needs are squarely met through the Spring Framework, others require support from other systems. In this session we will examine each of the twelve factors and present how Spring, and platforms such as Cloud Foundry satisfy them, and in some cases we’ll even suggest that responsibility should shift from Spring to platforms. At the conclusion you will understand what is needed for cloud-native applications, why and how to deliver on those requirements.
Building a Secure App with Google Polymer and Java / Springsdeeg
Polymer is the latest web framework out of Google. Designed completely around the emerging Web Components standards, it has the lofty goal of making it easy to build apps based on these low level primitives. Along with Polymer comes a new set of Elements (buttons, dialog boxes and such) based on the ideas of "Material Design". These technologies together make it easy to build responsive, componentized "Single Page" web applications that work for browsers on PCs or mobile devices. But what about the backend, and how do we make these apps secure? In this talk Scott Deeg will take you through an introduction to Polmyer and its related technologies, and then through the build out of a full blown cloud based app with a secure, ReSTful backend based on Spring ReST, Spring Cloud, and Spring Security and using Thymeleaf for backend rendering jobs. At the end he will show the principles applied in a tool he's currently building. The talk will be mainly code walk through and demo, and assumes familiarity with Java/Spring and JavaScript.
Extending the Platform with Spring Boot and Cloud FoundryKenny Bastani
When developing cloud native applications that are deployed and operated using a cloud platform, such as Cloud Foundry, there becomes a need to provision middleware services using the platform. The result of building platform services are that developers using the platform are able to take advantage of service offerings as bindings for their application deployments.
SpringOne Platform 2016
Speaker: Kenny Bastani; Developer Advocate, Pivotal.
Cloud Foundry is a powerful structured platform. For many organizations their first experience with Cloud Foundry feels like jumping in a time machine and emerging in a world where the automations are done and--even more surprising--they work! But that’s just the beginning.
Cloud Foundry is a trustworthy, capable foundation you can build upon. It’s power lies in the flexibility provided through a structured, clear framework for extension. That’s what I want to show you in this talk.
There are several supported mechanisms for extending the platform. In this talk we’ll consider each method and which problem areas they address well. We’ll cover everything from user-provided services to first class services managed by BOSH.
You may be extending the platform to provide unique, new services to your users; or to bridge cloud-native applications running on Cloud Foundry with existing data centers and tools. No matter your use case you’ll gain a valuable understanding of the extensibility of the platform itself to truly make it your own.
Cloud Foundry gives platform operators and platform engineers an incredible framework for delivering transformative value to application developers. Learn how in this talk.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Experience our free, in-depth three-part Tendenci Platform Corporate Membership Management workshop series! In Session 1 on May 14th, 2024, we began with an Introduction and Setup, mastering the configuration of your Corporate Membership Module settings to establish membership types, applications, and more. Then, on May 16th, 2024, in Session 2, we focused on binding individual members to a Corporate Membership and Corporate Reps, teaching you how to add individual members and assign Corporate Representatives to manage dues, renewals, and associated members. Finally, on May 28th, 2024, in Session 3, we covered questions and concerns, addressing any queries or issues you may have.
For more Tendenci AMS events, check out www.tendenci.com/events
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
work on title
perhaps something less intimidating; more relatable to work they are doing without ‘fancy names’
What I am about to show you will:
amaze
anger
shock
annoy
astound
and confuse
can be controversial
May not get it immediately. Those that do will walk out of here looking at api development with new eyes… thats a promise. You will never see them the same way again.
I’m going to tell you right now that this is a rethinking of the api pattern and a lot of its premises in how it is implemented so if you are not ready for a bumpy ride or if you have a weak heart, I’ll give you a moment to step outside…
… ok and with that…
let me ask you this…
the reason I bring this up…
This number used to be around 50% in 2005. Now, it’s roughly 25-30% now… and going down.
the api pattern was originally designed for software applications (centralized architecture)
but what is an api?
In Short: An API is a separation of concern of I/O for functionality of resource management
- For example…
Now the most common way is…api as software pattern
This is ONE software application… or a piece of software contained within ONE software application (creating a centralized architecture).
Here concerns are separated
standardized input/output to a separation of concern within the application
the separation of concern binds communication logic to a service which does resource mngmt (ie the resource that is requested, manipulated and returned)
api as architectural pattern is api as service amongst multiple connected software services (creating a distributed architecture).
The api pattern for architecture is IDENTICAL except the separation of concern is a software component separated from other software components… not concerns separated from other concerns.
In a distributed architecture, we can see:
there is already I/O and resource management in the standard MVC application
with request/response coming/going to other architectural components
… everything is mapped.
This is STILL a centralized architecture at this point but has the POTENTIAL to be more easily become a DISTRIBUTED architecture
Unfortunately, we didn’t understand that api is architecture as well as software and so when applying it to the web, we applied the the software pattern rather than the architectural pattern
For as you see when we add other services, we can share the I/O flow.
But now we have a problem…
Current implementations in distributed architectures are not so NEAT.
This creates a mixed implementation.
creating massive redundancy and duplication with every method.
Software confusion: where do we handle batch jobs? Where do we do checking? how do we handle loopback and redirect?
Architectural confusion: how do we share with external services? What do we share? How do we keep things in sync across architectural components and api instance?
We literally have to duplicate this information with EVERY method
then , as you can see in the body, we have to do additional checks for multiple roles handling this.
This can’t be separated and moved to the PROXY without duplicating or entanglement making it impossible to synchronize this data.
Thus overtime this data changes, it requires ‘human intervention’ to make sure ever instance of it remains synchronized due to this ‘hard coding’.
having to manually code the flow creates massive code duplication
it also makes it so you have to shut down the server and bring it back up overtime you want to add something new to the flow
by using existing communication layer, this reduces duplication and allows you to merely uses properties as toggles
finally, flow cannot be easily isolated and moved to separate server without creating entirely separate project; as separate layer, can be detected at proxy and sent to separate server to have separate functionality handled so as to not affect unaffected processes.
example: api batching
having to manually code the flow creates massive code duplication
it also makes it so you have to shut down the server and bring it back up overtime you want to add something new to the flow
by using existing communication layer, this reduces duplication and allows you to merely uses properties as toggles
finally, flow cannot be easily isolated and moved to separate server without creating entirely separate project; as separate layer, can be detected at proxy and sent to separate server to have separate functionality handled so as to not affect unaffected processes.
example: api batching
When I showed this to Netflix and how their tools like Zuul were doing precisely this, this is how the api manager responded.
And that not all…
Data stored/used in annotations cannot be shared with architectural components without duplication.
Annotations cant be cached as they would exist in two places: the controllers and the cache; this data would be impossible to sychronize. This is what is known as an architectural cross cutting concern as it creates duplication and/or entanglement.
Thus at this point we can easily state…
These two concepts cannot be reconciled without created a cross cutting concern every time.
Mixing the two causes api as an architectural pattern to DEFAULT to being an api as a software pattern and thus a centralized architecture.
The modern web api is a mixture of these two and as such has issues in scaling in distributed architectures as a result of creating this architectural cross cutting concern.
The solution is to apply the api pattern as architecture and not as software. Only then can you resolve issue with architectural components as you scale your application.
we need to see api as separation of SERVICE rather than separation of concern
we don’t need to add anything here as all the necessary structure is already in place
we just need to code our logic in correct places (communication logic in handler interceptor and business logic in controllers)
By preloading the IO state at runtime, we can:
share with all subscribed services to the api through a pub/sub model via web hooks
all the data contained in annotations act as rules associated with the uri endpoint
by containing all those rules in one file and caching that data, we can share it with the other architectural components
then we can change and it on the fly and reload without having to restart any components and subscribed services will have changes published to them through web hooks
no its not a college in the midwest
There are two types of IO state…
What does it do?
It is a complete separation
well in Grails, without giving away too much of the secret sauce right now, I did it in the handler interceptor like this…
You’ll notice in this example the controller is doing ALOT of additional work:
role checking
request.method enforcement
uri mapping
input checking
A lot of I/O and security that has been tacked on; these are not part of its ‘separation of concern’ and need to be shared with the architectural components.
The controller is now a proper separation of concern and is STRICTLY focused on business logic
At runtime, we bootstrap the files so that are loaded and cached…
Then in urlmapping, we create a default mapping based on app version to handle all mappings…
The controller is now a proper separation of concern and is STRICTLY focused on business logic
The controller is now a proper separation of concern and is STRICTLY focused on business logic