Prioritizing existing cloud solutions for features non-core to your business

When Daniel started to work in Elo7, the company website infrastructure was installed in two bare metal servers. Local SMTP server application was responsible for mail delivery. Server logs were stored in local drive. Managing and scaling bare metal servers was difficult, so everything was migrated to cloud instances. The mail delivery was decoupled from the application server and migrated to a service provider. Server logs were also migrated to a cloud PaaS, so developers would not need to log in the application servers to search in log files. These and other changes to the cloud lead to a lower cost and more flexible systems architecture, enabling the Startup to grow fast and solid.

Startups do not have time to build their own physical server infrastructure. They need to focus on their own product or service development. Nowadays, there are a lot of services that provide almost everything a Startup
needs to setup its business online. There are hundreds of offerings on Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS) layers. Moreover, most providers offer very low costs for low usage, as well as free tiers for beginners.

Today it is possible to build a technology company just by sticking together existing solutions. There are thousands of different Software as a Service (SaaS) platforms, most of them offering free tier for small companies
to solve a wide range of problems a company has, from file sharing applications to accounting software and communications tools. Almost everything is available freely online.

Software running into production is much more complex than running on developers machines. There are many cloud providers that offer simple solutions to deploy software in a mater of a mouse click, without needing any knowledge on system administrations. These Platform as a Service (PaaS) environments save a lot of precious time for startups, which in the beginning don’t have any specific requirement that justifies building its own
infrastructure.

Building a physical server infrastructure is hard, time consuming, and expensive. Developing commodity software is also a waste of time. Startups do not have time to spend on tasks other than their core business.

Startups usually have few software developers to do the entire job. It is impossible for a small team to be competent in all technologies. In a software startup, its product codebase is the most important place developers should spend they hours, learning about the business domain and creating inexistent and innovative solution to the startup customers. Moreover, every line of code deployed into production increases the maintenance costs. If developers spend time maintaining software non-core for the business, they have less time to work on core functionalities. It is a matter of cost benefit between building and buying. Building software non-core to your business will make you loose focus from your customers.

Therefore:

Use ready-made infrastructures over building your own solution. Prefer SaaS to PaaS, prefer PaaS to IaaS, prefer IaaS to ‘building your own infrastructure’, except for features core to your business.

The more non-core software you delegate to the cloud, the more time your team will have to work on what really matters: your customer. When you spend more time on your business software, you deliver more value and learn faster from your clients. By continuously delivering software to your customers you are bound to become competitive and profitable.

If you need a communication tool to keep the startup remote team together, you can use HipChat or Slack. For documents and spreadsheets creation, there is Google Drive, Microsoft Office 360. Virtual machines infrastructure
monitoring can be achieved with New Relic. Systems log processing and analysis can be done with Loggly or Splunk. Do remote pair programming with Screen Hero.

Most of these SaaS, PaaS and IaaS solutions were a startup someday. Off course if your startup product is a cloud system, developing a cloud service is core to you, so you won’t delegate these core functionalities to third
party companies. But even cloud service providers use third party software. IaaS companies use SaaS. SaaS companies use IaaS, and so on. The DevOps for Startups pattern can help you to choose the right balance between different cloud layers. A bad consequence of choosing the wrong cloud solution is that you can get stuck to a specific provider, so take care, preferring standard and replaceable solutions instead of proprietary hard to migrate architectures.

Hack money incomes and outcomes

Find creative ways to avoid unnecessary costs and get as much free resources as you can.

In the beginning of our startup, we didn’t have an office. My partner and I worked from our home, so we did not have to pay for an office space. But after some time, we were starting to grow the development team. We needed a place to meet with everybody. We rented a place at a very low cost. We tried to find co-working offices, but in our region it would cost more than having our own space. Then we needed to buy furniture. We discovered that new furniture prices were very expensive. We found a great alternative: asked some relatives for donation and also looked in auction websites. We could set up everything we needed for the office with less than US$500.

“In our company we have policy that you can spend company’s money on whatever you like, but you should treat it as it was yours. If you need something, it is ok to buy it, if you would pay for it yourself, too. It is kind of test that your really need that.” – Veli-Pekka (entrepreneur).

Long term purpose instead of money

Differentiate from big companies to attract talents.

When I started Playax with my partner Juliano, we did not have money to pay high salaries for tech talent in São Paulo, one of the most expensive cities in Brazil. Our startup was a high-tech innovative platform in the music industry, so we needed the best developers to create complicated algorithms. On a first try, we offered bellow average salaries, but even if some developers were interested in the company’s challenges, they did not accept the job. When we started to offer equity, we attracted exactly the people we wanted to our team: people with passion and long-term commitment with the company. Moreover, people willing to give up high salaries in exchange of being part of the company’s construction and purpose.

After the popularization of Internet in the 90s and the mobile technologies in the 2000s, we saw an amazing growth on creation of new high-tech companies around the globe. Most of these companies, known as startups, are born in technology clusters also called startup ecosystems. The objective of this PhD research is to advance the understanding of how software startups work, what are the elements that influence their behavior and how startups relate with other players in their ecosystem. For that, we are developing a conceptual framework model by using qualitative research techniques. In these presentation, we will explain the methodology, as well as the preliminary results for both São Paulo and Israeli ecosystems and the expected outputs of a third case-study in a mature ecosystem

Every Startup that has services online needs a cloud provider. Startups do not have time to build their own physical server infrastructure. They need to focus on their product or service development. But what cloud to use? There are so many different options, and CTOs do not have time to test each one of them. Maybe this post will help new Startups to choose between all cloud providers available.

The experience that I had with Playax was not typical, for two reasons: the first was that I have a lot of experience working with cloud. After working at Locaweb for 5 years, and developing software for internal cloud team, I spent one year in my PhD studying cloud services. The second reason is that Playax product is highly dependent from cloud. We are a BigData company. We needed a big infrastructure from day one. Our MVP needed a lot of cloud resources to be useful to our customers. Most of Startups do not need that much infrastructure, at least not before it starts growing fast.

Scaling a web applications can be easy for simple CRUD software running when you use Platform as a Service Clouds (PaaS). But if you need to deploy a complex software, with many components and a lot users, you will need have a mix of cloud services in PaaS, SaaS and IaaS layers. You will also need knowledge in architecture patterns to make all these software components communicate accordingly.

In this article, we share our experience of using cloud services to scale a web application. We show usage examples of load balancing, session sharing, e-mail delivery, asynchronous processing, logs processing, monitoring, continuous deployment, realtime user monitoring (RUM). These are a mixture of development and system operations (DevOps) that improved our application availability, scalability and performance.Continue reading →