Electronic invoices are a critical part for trade in Mexico. If invoices are not created and delivered in time, we can generate serious problems such as complete loss of cargo ships, representing millions of Mexican pesos in losses.

We had a legacy system developed in Java from 8 years ago. It had a lot of problems including:

Big memory footprint (24 GB per server)

A lot of servers in order to distribute load and isolate errors (15 servers)

Frequently downtimes

No proper error handling and messages for troubleshooting

No statistics (they produced more load in the system)

We built a new system that resolve all these problems and provide a better foundation for future services. This is the backend that will be used in all the retail and online Apple Stores in Mexico. We wrote the backend in Erlang and Elixir, with additional micro-services in Python, C++ and Java for XML validation and PDF generation.

In this presentation I will talk about:

How we trained the team of java/ruby in Elixir/Erlang

Metrics about the new system (from 15 to 4 servers, etc.)

Problems we face

How to introduce Elixir/Erlang in a company with a lot of investment in Java