Thank you for taking time to reply!
Here is a quote from a 2017 book (Microservices: Flexible Software Architecture). The *only* thing I see that's different is the use of REST. I read the original REST PhD thesis and found "nothing new" in it.
I remain wondering how close we are....
The new aspect is that microservices use modules that run as distinct processes. This approach is based on the philosophy of UNIX, which can be reduced to three aspects:
• One program should fulfill only one task, but it should perform this task really well.
• Programs should be able to work together.
• A universal interface should be used. In UNIX this is provided by text streams.
The term microservice is not firmly defined. Chapter 3, “What Are Microservices,” provides a more detailed definition. However, the following criteria can serve as a first approximation:
• Microservices are a modularization concept. Their purpose is to divide large software systems into smaller parts. Thus they influence the organization and development of software systems.
• Microservices can be deployed independently of each other. Changes to one microservice can be taken into production independently of changes to other microservices.
• Microservices can be implemented in different technologies. There is no restriction on the programming language or the platform for each microservice.
• Microservices possess their own data storage: a private database or a completely separate schema in a shared database.
• Microservices can bring their own support services along, for example a search engine or a specific database. Of course, there is a common platform for all microservices—for example virtual machines.
• Microservices are self-contained processes or virtual machines, e.g., to bring the supporting services along.
• Microservices have to communicate via the network. To do so microservices use protocols that support loose coupling, such as REST or messaging.
> To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
--
ern0
dataflow evangelist
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
It's time to hang this project up now.
I took a stab at it https://github.com/fractalide/fractalideIt's time to hang this project up now.
I took a stab at it https://github.com/fractalide/fractalide
It's time to hang this project up now.
What is an ESB?"it's significantly different to the style we're describing here, usually due to a focus on ESBs used to integrate monolithic applications." (Sidebar: Microservices and SOA)
"An enterprise service bus (ESB) implements a communication system between mutually interacting software applications."
"In a monolith, the components are executing in-process and communication between them is via either method invocation or function call. The biggest issue in changing a monolith into microservices lies in changing the communication pattern. "
"Application or service orchestration is the process of integrating two or more applications and/or services together to automate a process, or synchronize data in real-time. Often, point-to-point integration may be used as the path of least resistance. However, point-to-point integration always leads to a complex tangle of application dependencies (often referred to as "spaghetti code") that is very hard to manage, monitor and maintain"
"Services collaboration through events leads to a much more scalable architecture, with simpler and better tailored models, that will reduce the complexity of your digital assets, increase scalability, and improve your ability to collect data for analytics purposes."
"Handling endpoint failures, which has to be carefully handcrafted in a point-to-point situation, is now pushed to the messaging system. Therefore, the messaging system itself and the choreography of services around this component need to be built with these failures in mind."If a service if down for a short period of time, event stores will naturally re-post missed events as soon as the subscriber service comes back up. However, if a service is down for a longer period of time, then the service must reload the history of past events and check which ones have been missed, as shown by the code snippet below." (ibid)
"If you inject an IP in at one end of the network, you know it is going to get processed unless or until some process explicitly destroys it! Conversely, if you build a table IP, and forget to drop it when you are finished, many people might argue that it would be nice to have the system dispose of it for you. On the other hand... I could argue that such an error (if it is an error) may be a sign of something more fundamentally wrong with the design or the code. And anyway, all recent FBP implementations detect this error, and list the IPs not disposed of, so it is easy to figure out what you did wrong.
"So whether an object is an Entity or a Value Object really depends on the context of how you are using it within your application. Generally speaking objects like location, dates, numbers or money will nearly always be Value Objects, and objects like people, products, files or sales will nearly always be entities."
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsubscri...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-progra...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-progra...@googlegroups.com.
Hmm more like hanging a reusable coat up for a while.
The rust side of Fractalide is pretty much stable, you can build proper stable software in it now. I suppose I should bump Fractalide to stable. Oh yes, denis is working on making the virtual machine hot swappable. So this means you can reload the graph of FBP components without needing to stop the cluster of machines. This should hopefully come soon. This shouldn't be a stopper for a stable release I suppose...
Though why I'd not bumped to stable: I'd like to implement a whole new FBP in purescript sitting inside the Fractalide repo , allowing users to compose reusable and reproducible purescript components together. IPs flow from the server side rust FBP to client side purescript FBP.I don't have time to implement this, once I get back onto it I'll continue with the purescript.
Indeed I've made space for multiple other FBP language implementations in Fractalide. Each implementation will make use of the knowledge and patterns discovered in rust FBP, i.e. same concept of reproducible reusable components communicating with capnproto contracts. You guys can start rolling out other FBP implementations in python, C, whatever language you want. Each implementation will give the community access to that language's libraries. So you can imagine a micro service deployment with multiple different FBP implementations shunting IPs over to machines where they are best processed (numpy, other specialist libs etc).
Having multiple implementations most likely means I need to swap out capnproto for something called colfer. Capnproto is super fast on platforms which support pointers, but it's pretty sucky on platforms like javascript. Colfer would be a more appropriate binary serialization format for a polyglot environment. Nevertheless If I do that port I'd port the whole eco system which would be crippling but needed.
Also the uptake has been disheartening. People are too familiar with their local environments and pretty much don't see the benefit of a reproducible congruent configuration management system which leverages FBP reusability. Manually reproducing large graphs of FBP components is a drag... in some senses each component is like an application with it's own lifecycle. That's too much overhead if you don't have a reproducible environment. The uptake story will change when the platform is used as a cryptocontract client. Nothing like a bit of deflationary currency to gather the people.
So if you want to get your hands dirty in a stable environment and start growing out the system with rust components, documentation and even new implementations of FBP please be my guest, I'll also gladly made contributors maintainers of the project.
Are there any other info on this apart from the implementation itself?
This sounds like it's also the piece needed for fractalide's dataflow UI?
Good to know the structure is in place. The README also mentioned waiting for nixpkgs/nixos to support some features of systemd 232, are these ready to be taken advantage of?
Similarly, integration of tokio-rs was mentioned on the road to stable. Was this for fractal related functionality, or to the fractalide core itself?
Lastly, I had a play with nixcrates and did notice the number of derivations named after rust errors. Do I assume correctly that it is generally going to be a manual and possibly labor intense process in order to correct these builds?
Is Colfer much slower than Capnproto? Crippling in the sense that all edges would need to be rewritten?
FWIW, my initial reaction to Fractalide was similarly avoiding (prior to your adding documentation) due to my lack of understanding Nix. It looked really interesting, but I thought I didn't have the time to get into such an alternative. Nevertheless I did eventually end up investigating Nix/OS and am glad I did. A full deep dive. It did take some work, but only a few weeks to get up to speed (and the nixos community was helpful in this regard). Like you, I also find it odd those in the Nix community who are already invested in Nix/OS gave you such push back. Why some of them are dismissive of a new environment that makes such proper and practical use of their tools is puzzling. Perhaps some part of it was lost in translation, or it is the other paradigm move to FBP that put them off, who knows. Like you said, most are reluctant to stray from what's familiar.
Fractalide's use with crypto-contracts sounds interesting as well.
Yeah, if the FBP AND the NixOS AND the Rust community don't bite and take this forward it's dead in the water, a waste of my time. I initially thought that having an intersection of 3 communities would be superb. I couldn't be so wrong.
I will put a 'fractal' in this account github.com/ethereumproject after I finish github.com/ethereumproject/sputnikvm (or before, if someone wants to get started). I hope it'll grow into a fully fledged ethereum client like http://ethcore.io.
I'm designing sputnikvm to be a rust library which can easily plug into a fractalide rust node. From there we'll plug (a completed} github.com/ethereumproject/emeralds-rs wallet in too.
Thus laying a good foundation for real world commercial applications to be built using fractalide.
Let's see!