D for microservices

Laeeth Isharc laeeth at laeeth.com
Mon Oct 23 12:17:29 UTC 2017


On Monday, 23 October 2017 at 12:08:52 UTC, Jacob Carlborg wrote:
> On 2017-10-22 04:48, Joakim wrote:
>> I just read the following two week-old comment on the ldc 
>> issue tracker, when someone tried to run D on Alpine linux:
>> 
>> "For now everything works(?) but I think the process could be 
>> improved.. Would be really cool to have LDC easily building 
>> alpine containers + static D binaries for microservice and 
>> tooling development. I'm pretty tired of reading Go code :)"
>> https://github.com/ldc-developers/ldc/issues/2341#issuecomment-334626550
>> 
>> It strikes me that microservices are a great way for new 
>> programming languages like D to get tried and gain some 
>> uptake, but that D might not be that easy to deploy to that 
>> scenario yet.
>> 
>> So this is a question for those deploying microservices, as 
>> I'm not in that field, what can the D devs do to make it as 
>> easy as possible to get D microservices up and running, make 
>> some Docker and Alpine containers with ldc/dub/vibe.d 
>> preinstalled publicly available?  What else, what kinds of 
>> libraries do you normally use?
>> 
>> This is a niche that D and all newer languages should target. 
>> How do we do it?
>
> * Support full static linking using DMD, which requires the TLS 
> implementation to be modified
> * Support musl as the standard C library, I've discussed that 
> before [1]
> * Database drivers for the common databases (PostgreSQL, MySQL, 
> SQLite) compatible with vibe.d
> * Database driver abstraction on top of the above drivers, 
> perhaps some lightweight ORM library
> * RabbitMQ library compatible with vibe.d
> * Serialization to/from JSON and YAML
> * Official Docker images with DMD and LDC wouldn't hurt
> * Pre-compiled DMD that works on Alpine. Fully statically 
> linked DMD would help here
>
> That's what I can think of for now.
>
> [1] http://forum.dlang.org/post/nhem1l$1ee3$1@digitalmars.com

Can you elaborate on how the TLS implementation needs to be 
changed?

If someone wanted to work on rabbit bindings/wrapper, I might be 
open to sponsoring that.  I'm not in love with Rabbit (one node 
uses more than 40% of memory so the node goes down, taking the 
cluster with it.  really?), but we use it currently.

I made a start on bindings for librabbitmq here:
https://github.com/kaleidicassociates/rabbitmq-d


Laeeth.


More information about the Digitalmars-d mailing list