Nuvola: a tale of migration to AWS

In this series of articles we will describe our migration experience to AWS. Why a migration? Our old provider had limits. We had to overcome. In particular: No automation No flexibility No autoscaling If we wanted to grow it was necessary to migrate to a provider with these features. Need…

Method order assertion in PHPSpec: Deferred Expectations

Disclaimer This post title can be misleading. Method order is just an implementation detail that should not be tested as PHPSpec philosophy is to test your public API, not the implementation as it would lead to fragile tests. Fundamentalists might say that following example should not be performed in PHPSpec but with…

Symfony sharding

In a previous post we’ve seen how leverage Doctrine sharding functionalities. But how can we tell our app to use a specific shard? A common web app has usually at least two sources: http requests and cli commands. Let’s see one at the time. Http request As you already know HTTP is a…

Doctrine sharding

In the previous article we explored why sharding by tenant is a very good solution for us. In this article we dig into how to divide our Symfony app by shard. Doctrine We chose Doctrine as our ORM so let’s see what it offers to us. First of all you have to…

Data migration to AWS

In this article, I’ll tell you how we migrated our databases from our previous provider to AWS RDS. Our previous DB infrastructure was already in the cloud and the entire db was sharded, so we had about 350 GB of data split in about 1000 databases. Want to know more about…

Madisoft speaks at AWS Summit

We are very proud to have been invited by Amazon at AWS Summit Milan 2017 as speakers. Our speech will focus on how we’re using AWS RDS to leverage our relation data. As you may already know, our software Nuvola is a data-heavy SaaS and we currently manage more than…

RDS infrastructure automation with Ansible

In this article we are going to describe how we realized our RDS infrastructure using Ansible as automation tool. We’ve completely avoided using AWS GUI, both for implementation and management activities. Our aim was to develop a parametric infrastructure, able to adapt to all of our projects simply by changing few parameters in…

Symfony form pills – form type options

Today we are going to tackle a problem that I’ve recently faced with Symfony form types. Scenario: I need a choice type of a certain entity (Foo) with values that follows a certain logic

I’ve built up a FooChoiceType because I don’t want to inject fooAdapter in each form where I’m…

Symfony and multi-tenant apps: sharding

In part 1 of this series we stated that Nuvola is a multi-tenant software and using a single db for every tenant can quickly become a problem as your data grow. Let’s dig a bit about pros and cons about multi-tenant sharding. Pros Scalability Splitting each tenant data in its storage can easily…

The subtle difference of Prophecy doubles

Did you know that “under the hood” PHPSpec use Prophecy as library to create doubles? If you did not, now you do! If you read Prophecy documentation you may end up with some questions, so this guide is meant to be a quick tutorial to let you start working with the library:…

1 2 4