Diario del capitán, fecha estelar d489.y35/AB
Disclaimer: long (and nerdy) post ahead.
In our last entry, we wrote about MarsBased's principles when working for other companies, because we have recently been hired to develop our first client apps.
In this entry, we are breaking down our tool belt.
Twitter Bootstrap is a front-end framework created to design websites faster and easier. Its last version adopts a "mobile first" philosophy providing tools to create responsive sites and apps. Nowadays, every competitive website needs to be responsive, due to the rise of mobile traffic in multiple-sized screens or the latest Google algorithm changes, focusing on mobile experience (Google Hummingbird explained here).
Another technology we use is LESS. As a dynamic stylesheet language, LESS introduces variables, functions and operators in your stylesheets and preprocesses them. By doing that, designers can actually focus on designing, without having to write long, repetitive and tedious CSS stylesheets.
Server Side Development
We are Rubyists! We love Ruby on Rails simplicity, elegance, and cleanliness. While we believe that methodologies are language-agnostic, Ruby and Ruby on Rails help us follow Agile Development practices. That's the reason why we have chosen tools that let us move quickly through each development stage: building, integrating, testing & releasing.
At MarsBased, we take testing very seriously. We know that our clients might require changes over time, and introduce improvements to their apps. The only way we can ensure delivering these changes without breaking the entire codebase of the project is through testing. Test, test, test and then some.
For more specific projects, we have a flexible tool belt. According to every project's needs, we've got a broad set of technologies at hand to give our clients exactly what they need:
- ElasticSearch: For indexing and searching through our client data without affecting performance.
- Sidekiq: Handy when there are a lot of background processing jobs - like image and video transformations, web crawling or big data processing.
- Memcached: Caches almost every little part of a web application to achieve blazing fast responses, thus keeping response times low.
- Redis: Manages big amounts of volatile data faster than any relational database can.
Small teams need to automate and delegate processes to manage recurrent tasks. This is why we use Chef: to automatically provision our servers. Automation spares us from having to log into our servers (this is so last century's!) and guarantees that no human errors will happen during server installations. All the time we save by automating, we can use it in polishing our apps even further.
Because of our background using Chef, we have a custom set of configurations (called cookbooks in Chef jargon) that cover all the possible scenarios we could ever need. We don't need to reinvent the wheel for every project. We can set up a server in less than 30 minutes unless anything uncommon is required.
For deployments, we use Capistrano. This open-source tool is used to automate software deployments without downtime. Fast and simple. It is actually an awesome way to deliver our customers the latest version of their apps seamlessly.
At MarsBased, we know that sometimes things might go wrong. Most of the times, the real cause of a general failure is an error that goes unnoticed for too long.
Our servers run very different services that need to be monitored (Nginx, MySQL or Elasticsearch just to name a few!), so we use Monit to rule them all. Monit sends notifications whenever there is a risk of something failing such as a service being too loaded. It actually allows us to act proactively before any errors arise. But if a service goes down, Monit automatically tries to start it to minimize the downtime as much as possible.
Although Monit itself is very impressive, we also use another error-tracking tool very known by the Ruby community. Airbrake is an exception reporting service Airbrake trusted by over 40k customers, now seamlessly integrated with our tech stack. Simply put, if anyone using our web applications comes across an error message, we'll get a notification in our cell phones with the details of the error in less than a minute.
Nothing is more satisfying than spotting and solving bugs before users have even time to report them.
That's all for today, folks. As you can see, we love talking technologies. Feel free to drop us an e-mail or bring up a conversation on Twitter anytime.