How We Make the Right App for You (Part 2)

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.

Frontend Development

MarsBased stands for innovation by using state-of-the-art technologies. HTML5, CSS3 - based on Bootstrap - and client-side Javascript frameworks like Angular allow us to deliver responsive and highly dynamic websites with an unparalleled User Experience.

The MarsBased Tech Stack

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.

As for the Javascript side, we use Angular. Angular is a Javascript framework designed to build single-page web applications as if they were native by removing all the Javascript boilerplate. By doing that, Angular gives the browser the power it needs to transform our ideas into apps.

The most recent addition to the MarsBased tech stack has been CoffeeScript. CoffeeScript allows rewriting Javascript code with simplicity and elegance. After some research and testing, we integrated both CoffeeScript and Angular with Cookin.me and fell in love with it.

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.

We have adopted two popular Ruby frameworks for testing. With RSpec and Capybara, we feel very comfortable applying a test-driven development approach from unit testing to building acceptance tests.

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.

Deployment

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.

Maintenance

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.

Xavier Redó

Xavier Redó

Responsable de arquitectura y desarrollo. De todos los lenguajes de programación y frameworks existentes, se queda con Ruby on Rails y Angular. Pocos desarrolladores que conozcamos tienen sus habilidades sociales.

comments powered by Disqus

Estás a un paso de conocer a tu mejor socio.

Contrátanos