Sammis

Sammis

I need the communities assistance to make some rather difficult choices.

I have been given the assignment to research the best tools for a very large eCommerce venture.

My number 1. principal is to keep costs way way down. I other words I cannot go and get an off-the-shelf solution; no Oracle, no IBM, Amazon, none of the usual suspects that we would have to pay $$millions for licenses.

So it looks like we are going to have to build it from scratch. So the principles in play now are. Robustness, ease of maintenance, scalability, low cost, no fads, it’s got to last 20 to 30 years, lightening fast web interface, millions of concurrent users, no faults, no down time, minimal moving parts (not too many technology dependencies)

My search brought me to Go, Scala and Elixir and Erlang, COBOL (Yes!, COBOL) Adabase and Natural.


We have to make some choices. So far I am leaning towards

1. Phoenix (web platform) + Elixir (Erlang) (Development language) + NuoDB (scalable, elastic SQL DB)

Ubuntu seems the logical OS.


At another time in my life I would have chosen IBM AIX, because it scales and scales on IBM hardware with DB2, but this is not that time., and it would have cost $$Millions.


Folks of the community.

Am I heading in the right direction. What is your opinion and advise.

Your thoughts and advice would be much appreciated.

Thank you
SammiS

Showing Posts 1 to 10

blatyo

blatyo

Conduit Core Team

I know you mention no off the shelf solutions, but everything you mentioned is way bigger than you’d likely need initially. I’ll point out Shopify Pricing: Find the Right Plan for Your Business - Shopify and BigCommerce Pricing and Plan Information | BigCommerce as two things that don’t cost nearly as much and are likely cheaper than paying a team to build something equivalent.

adrianrl

adrianrl

Developing an E-Commerce platform from scratch will be a massive amount of time, effort and money, saying this, I’ll let you know what I think:

I don’t like Go, just my personal opinion, but I think a big code base will be a pain to maintain. I may change my opinion when Go 2 came out, seems like it will improve a lot, but it’s not here yet.

I’ve never tried Scala, it may work for you and your company, just want to add that you may want to consider Kotlin too, it’s built by and for the enterprise.

COBOL? is that a thing? I don’t know, never tried it.

Elixir and Erlang are the only sane choices from the languages you mentioned. I think there are great stories of success from big enterprises where concurrency is a must, like WhatsApp, Discourse, Pinterest, and so on.

Also from all options you mentioned, I think Elixir is the only one that has a well-established web framework, and that is an advantage to speed up development. Go has a lot of frameworks available, none of them like Phoenix, complete solutions like Phoenix doesn’t have much value in the Go community, in fact some people think that is much better to build your own stack with a toolkit to have more flexibility, that means you’ll need to figure out the libraries required for the project if you follow that path. Kotlin has support for Spring a well-known framework in the enterprise’s world. I don’t know about Scala or COBOL.

OvermindDL1

OvermindDL1

Honestly for something maintainable over a huge period of time I’d opt for something stronger typed than elixir or go or so. Scala isn’t bad for that, better than kotlin, but for working with money and the detail you need with that then I’d not opt for it either. Something like COBOL actually isn’t bad for this, not that I’d start any new project in it, Idris would be perfect except it is more academic then ‘useful’, so I’d probably opt for Rust, it’s still very strongly typed (though not dependently typed, it is a mock-refined typing though, so better than normal HM type systems) and is very reliable and seems to have the staying power to stay those decades (it really is the first language I’ve seen that I think can replace C/C++).

Elixir, however, would be great for scalability, however you’d want a most excessive test suite, dialyzer types everywhere, and a lot of enforcement. Combining Elixir and Rust would be a fantastic mix though and they work together exceptionally well, so Elixir would save you time for the bulk coding and Rust would give you the numerical safety and speed.

Still, I’d opt for something pre-made, this kind of task is anything but trivial.

adrianrl

adrianrl

I know nothing about Scala, (I tend to stay away from the Java-related ecosystem, only Kotlin took my interest), so yeah, it may be a good fit for this.

Totally agree with everything you said about Rust, it’s such a great language gaining a lot of attraction. However I’m still unsure of how it’s supposed to replace the well-established C / C++ ecosystem, of course, it has a refreshing modern syntax, and support for hot topics like WebAssembly that increases the interest and hype for the language. However I don’t know what happened to Mozilla’s engineers working on Rust, after reading the reasons of Steve Klabnik and Nick Cameron on why they left Mozilla (both did -and still do- a remarkable job with Rust and its ecosystem), I’m very skeptical about what the future of this project is, this kind of things are really bad for its reputation.

As a game development aficionado, I didn’t see anything relevant in the ecosystem, on the other hand C++ has Godot and Unreal, two mature and stable game engines.

OvermindDL1

OvermindDL1

There are actually a lot of building game engine libraries and full frameworks building up in Rust. There only aren’t any yet because a game engine is huge and Rust is still relatively new. There are rust bindings for both Godot and Unreal though. ^.^
Also see:

jeramyRR

jeramyRR

Here’s also a tutorial on how to get started with web development in Rust: A Basic Web Application with Rust and Actix-web - zupzup

It uses actix-web which is the fastest web framework available today. actix also uses an actor model.

BenMorganIO

BenMorganIO

As a person who used to contribute to Solidus, I HIGHLY recommend it. It’s very well looked after and lots of major ecommerce companies use it. It uses Ruby instead of Elixir though.

adrianrl

adrianrl

Wooo, never heard about the bindings of Unreal Engine, I may take a look then, since my knowledge of C++ is very limited. There’s a great talk of what Blizzard thinks about adopting Rust:

(It seems like some people at Blizzard uses Erlang)

Also I heard that Chucklefish Games has had great success using Rust, this talk is by Catherine West, a very funny one!

lpil

lpil

Creator of Gleam

From reading the requirements what jumps out at me if that it is required to last for 30 years, so I would think carefully about what technology is going to last that long.

The Java ecosystem has enough momentum for that, is currently very mature, and is not difficult to hire for, so I would be seriously Kotlin, Scala or Java.

I’ve not come across NuoDB before. It seems to be a niche proprietary database. Given proprietary databases have a habit of disappearing due to funding problems and niche databases have a problem of disappearing due to contributor shortages do you think it’ll be around in 10+ years? You may end up having to maintain an unfamiliar database by yourself, which is a scary idea. I would likely use Postgres or MySQL/MariaDB, both will still be around and supported for that long and both have been proven to usable at scale.

mythicalprogrammer

mythicalprogrammer

There’s shopify? Unless there is something I’m missing here or you want more control. It’s super easy to set up and running and you can move to build something custom when you need to or do that while shopify is running.

Cobol? From what I’ve read the majority of where Cobol is used is banking and it’s legacy stuff.

Adabase is Ada? Ada is an interesting language for system… good luck finding support though.

I did Scala. The learning curve was high and having several programmers with different level of skill set was interesting. Scala have a unified type system and I inherited a code base where my coworker typecast everything up to any type and basically use it as a dynamic language… Examples of high learning curve is the amount of pattern arises from it’s feature such as implicit class, cake pattern, etc… And akka, their actor system isn’t as good at Erlang’s BEAM VM. This is what I appreciate about Elixir and Erlang how small the language is and how terse it is.

Yeah I would go with Java. It’ll stay for a long time with the amount of code base and libraries invested in it.

I love elixir but it still not a sure thing at least to me to be banking for 30 years.

Where Next? Top

Trending in Questions Top

Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
matt-savvy
Anyone here using Honeybadger? My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of Bandit.HTTPError...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
FlyingNoodle
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews