40
ON THE SHOULDERS OF GIANTS. Evolving a legacy system using C# micro-services and RabbitMQ By Pat Hermens

Coolblue Behind the Scenes | Pat Hermens - On the shoulders of giants

Embed Size (px)

Citation preview

ON THE SHOULDERS OF GIANTS.Evolving a legacy system using C# micro-services and RabbitMQ

By Pat Hermens

• Pat Hermens

• ~15 years of Microsoft development

• Started with VB6 & MS Access - I know, right?

• Snr. WebAPI Developer at Coolblue for ~1.5 years

ME.

1. Our history

2. Our architecture

3. Our challenges

4. Our solutions (inc. RabbitMQ)

COMING UP.

A (LITTLE) BIT OF HISTORY.Where has the time gone?

15 YEARS AGO.

Coolblue built a back office system and called her Vanessa

15 YEARS AGO.

Coolblue was getting started:

• 1 pick-up point: Pieter’s house!

• 1 online store: mp3man.nl

• ~1 order a day

Vanessa just getting started.

• Your text goes here.

15 YEARS AGO.

FAST FORWARD.

10 YEARS AGO.

Coolblue was getting established:

• 1 pick-up point

• 12 online stores

• 350 orders a day

Vanessa was being rapidly developed to handle the load

10 YEARS AGO.

250 tables50 procedures/functions150 triggers

200 screens50 users

FAST FORWARD.

IN 2015.

Coolblue is definitely established:

• 7 physical stores

• 370+ online stores

• 12,000+ orders a day

… and we’re not done yet!

1300%

3000%

3500%

IN 2015.

1,600+ tables 3,800+ procedures 7500%2,800+ triggers

1,150+ screens 1,250+ active users 2400%

• Your text goes here.

IN 2015.

VANESSA.She’s evolved.

VANESSA EVOLVED.

VANESSA EVOLVED.Vanessa DuPrix

Vanessa Fixmeister

Vanessa Moneypenny

Vanessa Purchandez

Vanessa Catalovitz

Vanessa Sellswell

VANESSA EVOLVED.

VANESSA EVOLVED.

VANESSA EVOLVED.

VANESSA EVOLVED.

CHALLENGES.We all have them!

VANESSA.

Let’s face it, it’s an older system…

One clear goal:

Provide historical information.

“NEW” VANESSA.

Nice and new! and undefined.

One clear goal:

Deliver information.

Business Restrictions

• Agile

• Reliable

RESTRICTIONS.

Technical restrictions:

() => Testable;

() => Maintainable;

• .NET WPF / UW Applications.

• Continuous Delivery.

• Task-based Workflows.

• Event-based truthfulness.

NEW IDEAS.

SOLUTIONS.Ta-daaa.

• Messaging Framework.

• Allows us to shout any type of message…

• ...for any reason.

RABBITMQ.

Let’s bring the information to us when it’s produced

rather than when we need to consume it.

BACKGROUND JOBS.

2. Message goes on RabbitMQ queues.

3. Message is dequeued and processed by any/all interested consumers.

1. Process completion creates a message.

Long-running tasks need to signal when they are complete.

DEMO.

INTRA-SERVICE COMMUNICATION.

2. Messages go on RabbitMQ queues.

3. Messages are dequeued and processed by other services.

1. Meaningful events create messages.

Growing number of services need to talk to each other about “the truth”

DEMO.

ORACLE.

2. Messages go on RabbitMQ queues.

3. Messages are dequeued and processed by consumers.

1. Triggers in Oracle create messages.

Existing Vanessa processes need to share information with new systems

DEMO.

“What should I do?” vs. “What needs to be done?”

TASK-BASED WORKFLOW.

2. Incoming messages are presented as actionable tasks.

3. Tasks are processed by the (happy, event-driven) users.

1. Listeners pick up appropriate messages.

LET’S WRAP THIS UP.Because you want beer just as much as I do.

• Your text goes here.

VANESSA, EVOLVED.

• RESTful microservices, C# WebApi, background processing jobs?Let’s have a chat! [email protected]

• Message triggers, queues, routing keys & exchanges are your thing? Grab hold of Filipe. [email protected]

• Want to know more about how we’re getting things done? Have a chat with any of the Coolblue’ers hanging around tonight...

WANT TO KNOW MORE.

QUESTIONS.