1 karma · joined December 24, 2021
- S3 has a public protocol and many 3rd party providers support it (OpenIO, Scality, Ceph, Minio, etc),
- EFS could be replaced with something like DRDB or GlusterFS, or DigitalOcean's block storage or Google Cloud's networked disks.
- ELB could be replaced easily with similar services from other providers [1] if you use Kubernetes (I don't know if all have a LoadBalancer type though)
I would be more concerned about firewall/vpc rules, because I have no idea how those could be migrated without risk of forgetting some. Lock-in seems not that high in the end though and even less so if you use an open source container orchestration stack because they abstract most of these things away.
[1] https://kubernetes.io/docs/tasks/access-application-cluster/...
- want something simple that works today? Docker Swarm
- want something amazingly flexible? Kubernetes
- already use Mesos or DC/OS? Marathon/Mesos
This article from Mesosphere is interesting and gives a good overview, but it downplays advantages of Swarm and Kubernetes and clearly highlights Mesos: Docker has 4 bullet points, Kubernetes has 3 and Mesos has 5.
In addition, Marathon is meant to work on Mesosphere DC/OS and not on other operating systems. For instance, the "Virtual IP" [1] feature only works on DC/OS from what I can tell. This confused me because this feature appears on the UI even if you run Ubuntu, it just doesn't work in that setup.
Docker Swarm seems to have a very comparable feature set, but doesn't care what OS you run.
There is an Mesos plugin for Kubernetes [2] but it looks unmaintained, so this sentence seems a bit off: "Mesos could even run Kubernetes or other container orchestrators, though a public integration is not yet available." This also goes to show how important community support and commercial backing is and Kubernetes is the clear winner here.
At the end, you can read this: "want all of this portable across cloud providers and/or datacenters, then Mesos (or our own Mesos distribution, Mesosphere DC/OS)". With Docker Swarm, you can use multiple cloud providers. Docker Swarm does not care about what servers you use. It encrypts traffic between nodes and needs Docker. That's it. It is cloud agnostic. I'm not sure what the story is with Kubernetes here. Kubernetes is a huge beast: very flexible and powerful, but a high upfront setup cost when you want to manage everything yourself.
[1] https://dcos.io/docs/1.9/networking/load-balancing-vips/
And about the size: if the JS file is cached properly, downloading 1.5mb once doesn't seem like a huge issue, especially for something like Slack where only desktops use the web client (most mobiles probably download the Slack app). I don't know if this was the case here though.
Here's the original code from the "git-rev" package: https://github.com/tblobaum/git-rev/blob/master/index.js
This problem applies not only to editor plugins but all sorts of things nowadays: npm packages for Node.js devs in particular seem like a great way to get viruses, given how hundreds of dependencies get pulled in, sometimes to save 2 or 3 lines of code. Here is an example in the Node package for Postmark (an email service provider) which had a dependency for literally 4 lines of code: https://github.com/wildbit/postmark.js/pull/14/files
As developers, we need to be willing to reinvent the wheel when needed, instead of blindly installing dozens of 3rd party packages. And we should vet things we install no matter what.
And I think the bigger problem is that 3rd party plugins are becoming a thing. Now, it's all about plugins, installing dozens of plugins that are difficult to audit before hand. It's like blindly installing software from torrenting sites, but shinier because it has the Github stamp on it.
It was actually interesting to work on a new file format. The version 1 was not formally versioned. I realised that for the version 2, I would need to add a version number to the file format. Of course, the world doesn't care about any of that, but I learned something doing it and am happy about that.
> railcar always runs an init process separately from the container process
What does that mean in terms of day to day operations/debugging ? What are the benefits ?
It seems like their container builder, Smith, creates OCI [1] images, an open format that can be used from other tools such as runc or rkt.
edit: you might be interested in their article on "Building a Container Runtime in Rust" [1]
[1] https://blogs.oracle.com/developers/building-a-container-run...
It's hard to measure, like a lot of things, but we should not throw away a microwave because a single transistor broke. We should get someone to repair it. We would collectively save money (instead of paying people with the RSA doing nothing, we should get some of them to learn how to repair stuff) and save the environment.
As for the tone, you might want to be a little more respectful than to simplify other people's thoughts down to "regulations because you're unhappy with screw holes". It does not help you in any way.
A few weeks ago, I repaired an eltronical appliance and was surprised to see that all screws were screwed into plastic. As I unscrewed them to access the inside of the device, the plastic around the screw broke.
I think there should be laws that prevent screwing into plastic. That just makes no sense appart from upfront cost. Once the plastic is broken, there is no way but to throw the broken device away. Unless you can somehow glue everything back together, but that seems unpractical.
It's like devices are not even planned to be repaired. They are designed to be sold and then abandoned. That's the real issue. Not cost of repair.
Anything else I might have missed that EU is doing to improve itself for citizens lately ?
Or else they'll act as an exchange, which seems to be a good business too, as long as you have enough capital to get it going.
Developers could be tasked with working on these libraries that would have 0% overhead (since they are just a piece of code that can be used in another library), instead of creating REST/SOAP/RPC APIs that come with the HTTP/SOAP/RPC overhead.
This means you can start small, with a public REST/SOAP/RPC API. Less infrastructure, less server config, etc. And if at some point you need more scalability, you can always do an actual microservice (ie a separate REST/SOAP/RPC API) with the library code the day you absolutely need it for horizontal scalability or whatever.
I have seen this pattern used in the Rust world a lot. Projects expose both a library and a binary. And the binary is built on top of the library. This means you have 0 overhead if you want to use the binary's features, since you can simply include the library and get going.
Also, I think that having the tools to support deprecation is big advantage when working with a monolith. I think Rust has built-in support for compile-time deprecation notices. PHP, for instance, doesn't have that particular feature yet, as far as I know. Symfony tries its best by adding deprecation notices when you call a deprecated method/function. But you have to call it to realize it's deprecated.
I'm not here to promote Rust or hurt PHP, I actually love both. The statements above apply to a lot of other languages as well. I just took the examples of Rust and PHP because these are the ones I've worked with the most.
@xxs's comment is spot on as well.