5 ms·
I TIL - firecracker, thank you for that! :) Great article and project, i didn't understand the idea of using RabbitMQ and fetching for new events in a loop. I a
by kodka 4y ago
I TIL - firecracker, thank you for that! :)
Great article and project, i didn't understand the idea of using RabbitMQ and fetching for new events in a loop. I am not an architect, but i was thinking that real-time databases, are used for those purposes?
About the containers - if you are not running them in privileged mode, you should be pretty secured, especially by limiting what kind of binaries the containers have.
- eatonphil 4y agoWhat is a "real-time database"?
- davidjfelix 4y agoI think they're referring to firebase which sells itself as a "realtime database" or rephrased, a database designed with "realtime" (automatically updating) websites/apps in mind. The use of the word "realtime" for web tends to trigger a lot of systems developers who use the term to indicate that you can predict the actual real world time that something will take to compute, typically used in automotive and robotic settings. That being said, I didn't invent the word and words have multiple meanings and contexts. In this context it simply means push-delivered data that is pushed when updated. /disclaimer
- MattyMc 4y agoIt's a term that Firebase uses. From [their documentation](https://firebase.google.com/docs/database https://firebase.google.com/docs/database): "The Firebase Realtime Database is a cloud-hosted database. Data is stored as JSON and synchronized in realtime to every connected client." I believe "realtime" in this case pertains to the synchronization of data amongst clients through websockets. This is how I've seen the term "realtime database" most commonly used.
- seabrookmx 4y agoPeople mention firebase but another one was (is? haven't followed it in recent years) RethinkDB.
- paulgb 4y agoWith a real-time database, each worker could subscribe to be notified when the set of tasks changed, but it would require a separate locking mechanism in the application to ensure that each task is only attempted by one worker. (Imagine a scenario in which a task arrives when there are multiple workers idle.) With RabbitMQ, you ensure* that each task is only attempted by one worker at a time, and you don't have to do anything special to ensure that at the application level. *I'm simplifying a bit, there are edge cases where e.g. you lose a worker that has already started a task but not completed it.
- jgalentine007 4y agoInterestingly enough I picked RabbitMQ for the same reasons for a distributed execution system I designed at work. RabbitMQ provides a lot of nice to have features and flexibility when it comes to delivering messages between endpoints. The fact that you get access control, easy encryption, multiple protocols (mqtt/amqp/stomp etc), excellent reliability and scalability rolled into a mature system is pretty awesome. The concepts are easy to understand and get real code working. The interfaces with RabbitMQ are simple enough that you could replace it with something else without having to untangle a whole lot. The other killer feature for me was async event listening which cuts out a lot of overhead from polling / long polling.
- tptacek 4y agoContainers share kernels between tenants; that's the point of the design. The shared kernel is a huge security problem; it's easy to rattle off kernel LPEs that no realistic syscall filter would have prevented and that would pop a container runtime. It is not similarly easy to do that with a lightweight hypervisor.
- nerpderp82 4y agoHow so? virtio is pretty small surface area, go out far enough and everything is pure computation.
- tptacek 4y agoMy argument is empirical. I can name recent LPEs that bypass MAC and sandbox policies; it is not easy to name comparable hypervisor escapes. Shared-kernel container escapes are found so often they're not even all that memorable.
- nerpderp82 4y ago> Shared-kernel container escapes are found so often they're not even all that memorable. Agreed. I realized I inverted your hypervisor comment. Hypervisors have the compact contract that has any reasonable chance at being audited. Container security is basically a screen door.