{"componentChunkName":"component---src-templates-blog-list-jsx","path":"/blog/18/","result":{"data":{"prismic":{"allFeaturedblogs":{"edges":[{"node":{"featured_blogs_enabled":true,"heading":[{"type":"paragraph","text":"Featured posts","spans":[]}],"featured_blog_1":{"__typename":"PRISMIC_Blog","_linkType":"Link.document","blog_header_image":{"dimensions":{"width":790,"height":395},"alt":null,"copyright":null,"url":"https://images.prismic.io/www-static/6d8d81b1-971a-4313-b033-b4e125cb14a0_MondoDB-blog-header-790x395.PNG?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Introducing DigitalOcean Managed MongoDB – a fully managed, database as a service for modern apps","spans":[]}],"blog_post_date":"2021-06-29","blog_post_content":[{"type":"paragraph","text":"MongoDB is one of the most popular databases, and it’s ideal for apps that evolve rapidly and need to handle huge volumes of data and traffic. It offers advantages like flexible document schemas, code-native data access, change-friendly design, and easy horizontal scale-out.","spans":[{"start":22,"end":44,"type":"hyperlink","data":{"link_type":"Web","url":"https://db-engines.com/en/ranking","target":"_blank"}}]},{"type":"paragraph","text":"However, building and maintaining MongoDB clusters from the ground up can be a huge undertaking. Developers often complain that they have to spend their valuable time and resources on database management. Well, we’ve been listening and have some great news: accessing and managing MongoDB on DigitalOcean just got a lot simpler!","spans":[]},{"type":"paragraph","text":"We are excited to announce that DigitalOcean Managed MongoDB is now in General Availability. Managed MongoDB is a fully managed, database as a service (DBaaS) offering from DigitalOcean, built in partnership with and certified by MongoDB Inc. It provides you all the technical capabilities that make MongoDB so beloved in the developer community. Together we have ensured that you will get access to all the latest releases of the MongoDB document database as they become available.","spans":[{"start":32,"end":91,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/products/managed-databases-mongodb/"}},{"start":230,"end":241,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.mongodb.com/","target":"_blank"}}]},{"type":"paragraph","text":"Managed MongoDB simplifies the MongoDB administration. Developers of all skill levels, even those who do not have prior experience in databases, can spin up MongoDB clusters in just a few minutes. We handle the provisioning, managing, scaling, updates, backups, and security of your MongoDB clusters, allowing you to offload the complex, time consuming –yet critical – database administration tasks to us. This empowers you to focus on what really matters: building awesome apps.","spans":[]},{"type":"embed","oembed":{"height":113,"width":200,"embed_url":"https://www.youtube.com/watch?v=NvHQSV7jnKA","type":"video","version":"1.0","title":"Create a MongoDB Database on DigitalOcean","author_name":"DigitalOcean","author_url":"https://www.youtube.com/c/Digitalocean","provider_name":"YouTube","provider_url":"https://www.youtube.com/","cache_age":null,"thumbnail_url":"https://i.ytimg.com/vi/NvHQSV7jnKA/hqdefault.jpg","thumbnail_width":480,"thumbnail_height":360,"html":"<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/NvHQSV7jnKA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"}},{"type":"heading2","text":"Benefits of Managed MongoDB","spans":[]},{"type":"paragraph","text":"","spans":[]},{"type":"list-item","text":"Easy set up and maintenance: We create the database clusters for you. Simply choose the cluster configuration (e.g., memory, disk size, number of nodes, etc.), and the data center in which you want to host the database. Follow a few simple steps and your database cluster will be up and running in a matter of minutes. You can spin up clusters using the cloud control panel, CLI, or API.\n\n","spans":[{"start":0,"end":28,"type":"strong"}]},{"type":"list-item","text":"Automatic daily backups with point in time recovery: Data is one of the most important assets of an app, so it’s critical to backup your database. We take backups of your entire clusters automatically on a daily basis, for free. We also provide a point in time recovery for 7 days, that way if things go wrong due to human error, machine error, or some combination of both, you can easily restore the database as it was at any point in the previous 7 days. \n\n","spans":[{"start":0,"end":52,"type":"strong"}]},{"type":"list-item","text":"Automatic updates and access to latest MongoDB releases: You get access to MongoDB 4.4. This is the latest release of MongoDB and comes packed with numerous enhancements like hedged reads, rust, and swift drivers. Since we have developed Managed MongoDB in partnership with MongoDB Inc, you will always get access to new releases as they become available. With Managed MongoDB, the updates happen automatically. Just select a date and time for the updates and we take care of the rest. This makes it easy to stay up to date with MongoDB releases without disrupting your business.\n\n","spans":[{"start":0,"end":56,"type":"strong"},{"start":148,"end":169,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.mongodb.com/new","target":"_blank"}}]},{"type":"list-item","text":"High availability with automated failover: If your database goes down, it can take down the entire app, leading to bad customer experiences. With Managed MongoDB, you can easily minimize the downtime for your database and make it highly available with standby nodes. Standby nodes add redundancy, so if for example the primary node fails, the standby node is immediately promoted to primary and begins serving requests while we provision a replacement standby node in the background.\n\n","spans":[{"start":0,"end":42,"type":"strong"}]},{"type":"list-item","text":"Scale up easily to handle traffic spikes: As your app gains traction and the usage grows, it’s important to have a database that can keep up with the increased demand. With Managed MongoDB, you can easily scale up the size of database nodes when needed.\n\n","spans":[{"start":0,"end":41,"type":"strong"}]},{"type":"list-item","text":"Secure by default: Since data is critical, it also needs to be secure. We encrypt data at rest with LUKS and in transit with SSL. When you create a new cluster, it’s placed in a VPC network by default that provides a more secure connection between resources. You can also restrict access to your nodes to prevent brute-force password and denial-of-service attacks.","spans":[{"start":0,"end":18,"type":"strong"},{"start":178,"end":189,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/docs/networking/vpc/"}}]},{"type":"heading2","text":"The need for Managed Databases","spans":[]},{"type":"paragraph","text":"DigitalOcean’s mission is to simplify cloud computing so developers, startups, and SMBs can spend more time building software that changes the world. While databases are a critical component to any application, building, maintaining, and scaling them can be complex and time consuming. For developers that are building apps for their business, database administration is often not a core focus area. But it’s quite common to find developers that write the code and then also roll up their sleeves to maintain databases. Such users would rather offload the tedious database administration and focus their limited time and energy on building and enhancing their apps. ","spans":[]},{"type":"paragraph","text":"With this in mind, we introduced Managed Databases a couple of years ago and are excited to add Managed MongoDB to our portfolio. With this release, DigitalOcean Managed Databases now supports the following engines:","spans":[{"start":33,"end":50,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/products/managed-databases/"}}]},{"type":"image","url":"https://images.prismic.io/www-static/87745cc1-1c5f-4463-b104-104b7fc30dc7_managed-databases-logos.png?auto=compress,format","alt":null,"copyright":null,"dimensions":{"width":849,"height":104}},{"type":"paragraph","text":"Managed MongoDB launch comes on the heels of DigitalOcean App Platform, a modern, reimagined PaaS (Platform as a Service) that we released a few months ago. App Platform makes it very easy to build, deploy, and scale apps and static sites. You can deploy code by simply pointing to your GitHub and GitLab repos, and App Platform will do all the heavy lifting of managing infrastructure, app runtimes, and dependencies. App Platform, along with Managed Databases, helps fulfill DigitalOcean’s mission by empowering developers, startups, and SMBs to focus more on their apps, and less on the underlying infrastructure and databases.","spans":[{"start":45,"end":70,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/products/app-platform/"}}]},{"type":"heading2","text":"How Managed MongoDB works","spans":[]},{"type":"paragraph","text":"DigitalOcean provides you with various compute options to build your apps like:","spans":[]},{"type":"list-item","text":"Droplets: On-demand, Linux virtual machines suitable for production business applications and personal passion projects.","spans":[{"start":0,"end":8,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/products/droplets/"}}]},{"type":"list-item","text":"DigitalOcean Kubernetes: Managed Kubernetes with automatic scaling, upgrades, and a free control plane.","spans":[{"start":0,"end":23,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/products/kubernetes/"}}]},{"type":"list-item","text":"DigitalOcean App Platform: A fully managed Platform as a Service.","spans":[{"start":0,"end":25,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/products/app-platform/"}}]},{"type":"paragraph","text":"No matter which compute option you choose to build your apps, you can easily add Managed MongoDB to it. In addition to this, Managed MongoDB also integrates with the Node.js 1-Click App from DigitalOcean Marketplace making it a lot easier to build Node.js apps.","spans":[{"start":166,"end":215,"type":"hyperlink","data":{"link_type":"Web","url":"https://marketplace.digitalocean.com/apps/nodejs"}}]},{"type":"heading2","text":"Simple, predictable pricing","spans":[]},{"type":"paragraph","text":"Just like all DigitalOcean products, Managed MongoDB provides simple, predictable pricing that allows you to control costs and prevent any surprise bills. You can spin up a database cluster for just $15/month, or a highly available three-node replica set for $45/month. Click here for more information.","spans":[{"start":270,"end":301,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/pricing/#managed-databases"}}]},{"type":"heading2","text":"Regional availability","spans":[]},{"type":"paragraph","text":"Managed MongoDB is currently available in the following regions:","spans":[]},{"type":"list-item","text":"NYC3 (New York, USA)","spans":[]},{"type":"list-item","text":"FRA1 (Frankfurt, Germany)","spans":[]},{"type":"list-item","text":"AMS3 (Amsterdam, Netherlands)","spans":[]},{"type":"paragraph","text":"We will be making Managed Mongo available in other regions soon. Please check out the release notes for most up to date information on regional availability.","spans":[{"start":86,"end":99,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/docs/release-notes/"}}]},{"type":"heading2","text":"Join us at deploy, DigitalOcean’s virtual user conference","spans":[]},{"type":"paragraph","text":"Today we have deploy, DigitalOcean’s signature user conference, which focuses on celebrating, educating, and connecting awesome builders from all over the world.","spans":[{"start":14,"end":20,"type":"hyperlink","data":{"link_type":"Web","url":"https://deploy.digitalocean.com/home"}}]},{"type":"paragraph","text":"Check out the keynote session from DigitalOcean's CEO, Yancey Spruill, in which he talks about where we're headed as a company and shares some exciting product updates. His keynote will be followed by sessions from community members, engineers, customers, and other experts that are building technologies and businesses powered by the cloud. With live Q&A and an active Discord server, there’s ample opportunity to engage and learn something new. Click here to attend the deploy conference.","spans":[{"start":14,"end":69,"type":"hyperlink","data":{"link_type":"Web","url":"https://deploy.digitalocean.com/agenda/session/552806"}},{"start":347,"end":384,"type":"hyperlink","data":{"link_type":"Web","url":"http://do.co/deploy-discord"}},{"start":461,"end":489,"type":"hyperlink","data":{"link_type":"Web","url":"http://do.co/deploy"}}]},{"type":"paragraph","text":"We are also launching a hackathon for DigitalOcean Managed MongoDB. Learn how you can participate, submit an app and get a t-shirt.","spans":[{"start":24,"end":66,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/mongodb-hackathon"}}]},{"type":"paragraph","text":"We hope you will give Managed MongoDB a try. Here are some sample datasets and sample apps that you can use to kick the tires. Check out the docs and let us know what you think!","spans":[{"start":22,"end":43,"type":"hyperlink","data":{"link_type":"Web","url":"https://cloud.digitalocean.com/databases/new?engine=mongodb"}},{"start":59,"end":90,"type":"hyperlink","data":{"link_type":"Web","url":"https://github.com/do-community/mongodb-resources","target":"_blank"}},{"start":141,"end":145,"type":"hyperlink","data":{"link_type":"Web","url":"https://docs.digitalocean.com/products/databases/mongodb/"}}]},{"type":"paragraph","text":"If you’d like to have a conversation about using DigitalOcean and Managed MongoDB in your business, please feel free to contact our sales team.","spans":[{"start":120,"end":142,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/company/contact/sales/"}}]},{"type":"paragraph","text":"Happy coding!","spans":[]},{"type":"paragraph","text":"André Bearfield","spans":[]},{"type":"paragraph","text":"Director of Product Management","spans":[]}],"tags":[{"tag1":{"__typename":"PRISMIC_Tag","tag":"Product Updates","_linkType":"Link.document","_meta":{"uid":"product-updates"}}}],"author":{"__typename":"PRISMIC_Author","author_name":"André Bearfield","author_image":{"dimensions":{"width":553,"height":547},"alt":"André Bearfield","copyright":null,"url":"https://images.prismic.io/www-static/fdc7c85186f0a850b04083e1d4306bd1c19772e8_andre-bearfield.png?auto=compress,format"},"_meta":{"uid":"andre-bearfield"}},"_meta":{"uid":"introducing-digitalocean-managed-mongodb"}},"featured_blog_2":{"__typename":"PRISMIC_Blog","_linkType":"Link.document","blog_header_image":{"dimensions":{"width":790,"height":400},"alt":"Droplet Console","copyright":null,"url":"https://images.prismic.io/www-static/710499ae-78cc-4179-afc1-15793637b200_DODX3727-790x400-logo-2.jpg?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Securely connect to Droplets with SSH key pairs using a new Droplet Console","spans":[]}],"blog_post_date":"2021-08-10","blog_post_content":[{"type":"paragraph","text":"The famous author Ken Blanchard once said, “Feedback is the breakfast of champions.\" This is something we truly believe at DigitalOcean, and we always strive to enhance our products based on customer feedback.","spans":[]},{"type":"paragraph","text":"With this goal in mind, we are excited to introduce a new Droplet Console that will make it much easier to connect to your Droplets securely. The new Droplet Console provides one-click SSH access to your Droplets through a native-like SSH/Terminal experience. It also eliminates the need for a password or manual configuration of SSH keys. Starting today, we’re pleased to announce that the new Droplet Console is now available to all Droplet users.","spans":[]},{"type":"heading2","text":"Why you should be using Secure Shell (SSH) ","spans":[]},{"type":"paragraph","text":"Password-based security is notoriously insecure due to password fatigue and the overuse of passwords such as ‘123456’. Secure Shell or SSH is a network communication protocol that solves this by using passwordless solutions for encryption, enabling two computers to communicate and securely share data. At a high level, SSH works by creating cryptographic key pairs consisting of a public and private key, which are computer generated and stored separately to ensure their security. ","spans":[{"start":80,"end":117,"type":"hyperlink","data":{"link_type":"Web","url":"https://cybernews.com/best-password-managers/most-common-passwords/"}}]},{"type":"paragraph","text":"SSH has become the default encryption protocol for many industries, but it was difficult to use SSH keys with DigitalOcean’s current Recovery (VNC) console, which is why we developed our new Droplet Console. The new Droplet Console is backed by an agent that security supervises the key pair, while also providing one-click SSH access to our users. You can see the full list of features below.","spans":[]},{"type":"heading2","text":"The new Droplet Console: More time saving, less time wasting ","spans":[]},{"type":"paragraph","text":"The new Droplet Console is for everyone who is looking to build fast, secure apps and avoid hassles with SSH access & usability issues.","spans":[]},{"type":"paragraph","text":"In addition to easier SSH access, the new Droplet Console comes with:","spans":[]},{"type":"list-item","text":"Copy/paste text: Instead of typing lengthy key pairs and text manually, you can use copy/paste to save time. ","spans":[{"start":0,"end":17,"type":"strong"}]},{"type":"list-item","text":"Multi-color support: Multi-color support makes the console more useful and intuitive, and breaks the conventional standard appearance which is black text on a white background. ","spans":[{"start":0,"end":41,"type":"strong"}]},{"type":"list-item","text":"Multi-language support: DigitalOcean’s new Droplet Console supports multiple languages, meaning you can now type and view any content in any language that is supported by UTF-8","spans":[{"start":0,"end":24,"type":"strong"}]},{"type":"list-item","text":"OS/images supported: Linux distributions (Ubuntu(16.04 - 20.04), Fedora (32 & 33), Debian (9), CentOS (7.6 & 8.3), CentOS 8 Stream, Rocky Linux and Marketplace images.","spans":[{"start":0,"end":20,"type":"strong"},{"start":148,"end":159,"type":"hyperlink","data":{"link_type":"Web","url":"https://marketplace.digitalocean.com/"}}]},{"type":"paragraph","text":"The new Droplet Console is available by default on any new Droplets you spin up. You can also enable it manually on older Droplets. Click here to learn more!","spans":[{"start":132,"end":157,"type":"hyperlink","data":{"link_type":"Web","url":"https://docs.digitalocean.com/products/droplets/how-to/connect-with-console/"}}]},{"type":"paragraph","text":"Check out this short walkthrough video that shows the new Droplet Console in action: ","spans":[]},{"type":"embed","oembed":{"type":"video","embed_url":"https://www.youtube.com/watch?v=Qt7QihVuxiE","title":"Access Your Droplet Terminal Through the Web Console","provider_name":"YouTube","thumbnail_url":"https://i.ytimg.com/vi/Qt7QihVuxiE/hqdefault.jpg","provider_url":"https://www.youtube.com/","author_name":"DigitalOcean","author_url":"https://www.youtube.com/c/Digitalocean","height":113,"width":200,"version":"1.0","thumbnail_height":360,"thumbnail_width":480,"html":"<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/Qt7QihVuxiE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"}},{"type":"paragraph","text":"We hope you’re excited about the new Droplet Console. You’re welcome to spin some Droplets up right now, and try out the new Droplet Console – why wait?","spans":[{"start":72,"end":103,"type":"hyperlink","data":{"link_type":"Web","url":"https://cloud.digitalocean.com/droplets/new"}}]},{"type":"paragraph","text":"Happy coding!","spans":[]},{"type":"paragraph","text":"Harsh Banwait, Senior Product Manager","spans":[]}],"tags":[{"tag1":{"__typename":"PRISMIC_Tag","tag":"Product Updates","_linkType":"Link.document","_meta":{"uid":"product-updates"}}}],"author":{"__typename":"PRISMIC_Author","author_name":"Harsh Banwait","author_image":{"dimensions":{"width":600,"height":399},"alt":null,"copyright":null,"url":"https://images.prismic.io/www-static/e83ff690-b20c-4d88-a2b6-57e562558cd6_download.png?auto=compress,format"},"_meta":{"uid":"harsh-banwait"}},"_meta":{"uid":"new-droplet-console-ssh-support"}},"featured_blog_3":{"__typename":"PRISMIC_Blog","_linkType":"Link.document","blog_header_image":{"dimensions":{"width":790,"height":400},"alt":null,"copyright":null,"url":"https://images.prismic.io/www-static/588e28d3-d41e-480b-937b-8c3b19201f6e_DODX3568-790x400-Blog.jpg?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"How to scale your SaaS product without breaking the bank","spans":[]}],"blog_post_date":"2021-06-22","blog_post_content":[{"type":"paragraph","text":"These days, if you are in the business of software, chances are you are delivering or plan to deliver your services using a Software-as-a-Service (SaaS) model. A combination of internet-based delivery, subscription-based pricing, and low-friction product experiences have made SaaS solutions valuable tools for their users, and an excellent vehicle for software builders looking to distribute their products.","spans":[]},{"type":"paragraph","text":"These factors have made SaaS solutions ubiquitous; SaaS is the largest segment in the public cloud market, and is used to provide functionality ranging from personal finance apps for consumers, to productivity software for businesses, and even tools and services for software developers themselves to compose their applications and simplify their workflows. It is also not uncommon to find micro-SaaS applications being built for specific industries such as retail, job functions such as accounting or marketing, or tasks such as event management. ","spans":[]},{"type":"paragraph","text":"The best thing about this SaaS wave has been that it has allowed a new generation of software builders to build and monetize applications and participate in the digital economy. Previously, you had to be a big company with lots of resources, name recognition and distribution networks to successfully sell software products. Now, irrespective of whether you are a single person working on a passion project, a small team of developers in a startup, or a small and medium-sized business (SMB), the SaaS model enables you to express your ideas in the form of software and deliver them to customers anywhere in the world.","spans":[]},{"type":"heading2","text":"The unique challenges of building SaaS solutions","spans":[]},{"type":"paragraph","text":"","spans":[]},{"type":"paragraph","text":"Despite the opportunities that come with the widespread adoption of SaaS products, software builders still have to answer key questions in their journey to building successful SaaS products. Understanding what customers to target, features to prioritize, how to price your product, and how to acquire customers are all critical questions to figure out while you are also doing the important job of actually building and operating the product. ","spans":[]},{"type":"paragraph","text":"Writing the code, testing, deployment, monitoring the usage in production, and ensuring that your apps are able to handle the additional demand when customer base and usage grows are all essential and time-consuming tasks.","spans":[]},{"type":"paragraph","text":"Additionally, being able to test multiple ideas, pivot, and double down on the ideas that actually work is critical in early stages of SaaS development. Once growth comes, it is equally important to scale up without compromising on performance or reliability. Needless to say, all of this needs to be economically viable as well, since not everyone has the resources of large SaaS providers like Salesforce or Adobe.","spans":[]},{"type":"heading2","text":"Cloud Computing enables builders but also poses challenges","spans":[]},{"type":"paragraph","text":"","spans":[]},{"type":"paragraph","text":"Fortunately, for the act of building and operating your apps, cloud computing can help take some load off your shoulders. Unless you have the scale and resources of Facebook, chances are you are not going to set up your own data centers to host the computing infrastructure that powers your SaaS company. Public cloud infrastructure providers can bring great value to SaaS builders by providing on-demand computing services with usage-based pricing. However, just like how the legacy software companies weren't built for the SaaS model, the early (and big) cloud computing services were not optimized for the unique needs of small SaaS building teams. ","spans":[]},{"type":"paragraph","text":"Smaller SaaS teams face challenges with large cloud computing providers, including:","spans":[]},{"type":"heading4","text":"Too many technology options","spans":[]},{"type":"paragraph","text":"There are just too many options for tech stacks on which to build your SaaS - programming languages, application development frameworks, libraries, runtime environments, architectural patterns, and deployment models - and the list is growing by the day.","spans":[]},{"type":"heading4","text":"Complexity of cloud computing services","spans":[]},{"type":"paragraph","text":"Even when you have decided on a technology stack, there is a lot of cloud vendor-specific terminology you need to learn and heavy lifting you need to do to build on the cloud, not all of which contributes to making your SaaS applications successful.","spans":[]},{"type":"heading4","text":"Unpredictable costs","spans":[]},{"type":"paragraph","text":"The experimentation necessary in early stages of SaaS development, as well as the scaling of applications required during the growth phase, call for affordable and predictable pricing from your cloud provider. The last thing SaaS teams want is surprising and indecipherable bills from your cloud provider. Unfortunately, smaller businesses often experience unpredictable costs with cloud providers who are busy serving only the large enterprises.","spans":[]},{"type":"heading2","text":"DigitalOcean provides a simple, cost effective solution for SaaS builders","spans":[]},{"type":"paragraph","text":"Fortunately, at DigitalOcean we have a laser focus on small software development teams, who are trying to build the next generation of applications. Today, DigitalOcean customers are already building SaaS applications which serve all kinds of customers.","spans":[{"start":191,"end":217,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/solutions/saas/"}}]},{"type":"paragraph","text":"We believe SaaS builders should focus on building apps that power their business, and not spend their valuable time on managing infrastructure. That is exactly what we have been able to enable through our intuitive products that are built for scale and reliability.","spans":[{"start":205,"end":223,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/products/"}}]},{"type":"list-item","text":"Vidazoo is an advertising technology company specializing in video streaming and serving. It serves video ads to thousands of websites and handles close to 10 billion requests per day. \n\n“We are as much a data company as an adtech company. Our business relies on speedy and accurate data processing at massive scale. DigitalOcean provides us the perfect set of tools to operate our SaaS business profitably, while not making us feel the need to become full time system administrators. We plan to move a lot of our apps to DigitalOcean App Platform and other fully managed products.” - Roman Svichar, CTO of Vidazoo","spans":[{"start":0,"end":7,"type":"hyperlink","data":{"link_type":"Web","url":"https://vidazoo.com/"}},{"start":187,"end":583,"type":"em"}]},{"type":"paragraph","text":"We believe in meeting customers where they are. If they already have an understanding of cloud infrastructure technologies, they should be able to leverage that knowledge and get started with our products without any further ramp up.","spans":[]},{"type":"list-item","text":"Whatfix is an enterprise SaaS provider that offers a digital adoption platform to businesses. The company helps enterprises gain the full value of their investments in enterprise applications by providing real-time, interactive, and contextual guidance to users of those applications. \n\n“What we really love about the DigitalOcean platform is the ease of use. We feel like we know infrastructure and can handle most of the configuration and management. What we needed from a cloud was not bells and whistles but efficiency and reliability. DigitalOcean provides us a platform to build our apps and then gets out of the way. Just how we like it.” - Achyuth Krishna, Director of Engineering of Whatfix","spans":[{"start":0,"end":7,"type":"hyperlink","data":{"link_type":"Web","url":"https://whatfix.com/blog/driving-the-future-now-were-excited-to-announce-our-90-million-series-d-funding/"}},{"start":287,"end":648,"type":"em"}]},{"type":"paragraph","text":"We understand that scaling while maintaining reliability of applications and profitability of business is important, so we provide robust solutions which minimize downtime.","spans":[]},{"type":"list-item","text":"Centra is a SaaS-based e-commerce platform for global direct-to-consumer and wholesale e-commerce brands. Centra provides a powerful e-commerce backend that lets brands build pixel-perfect, custom designed, online flagship stores. \n\n“How do we enable our customers to create differentiated online experiences? How do we ensure their e-commerce apps stay up and running at all times? How do we scale on-demand when traffic grows or new customers come in? These are the questions that we ask ourselves every day. Thankfully, we have a partner in DigitalOcean that provides just the platform to answer those questions enabling us to guarantee 99.9% uptime for our clients.” - Martin Jensen, CEO of Centra","spans":[{"start":0,"end":6,"type":"hyperlink","data":{"link_type":"Web","url":"https://centra.com/"}},{"start":233,"end":673,"type":"em"}]},{"type":"paragraph","text":"These are just a few examples of SaaS businesses finding success on DigitalOcean. We are constantly amazed by the creativity and innovation that software builders are utilizing our platform for. If you are interested in learning more about product updates, technical deep-dives and best practices for building SaaS products and businesses, please contact us to learn how we can help you get started. ","spans":[{"start":340,"end":357,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/migrate/?utmmedium=blog","target":"_blank"}}]},{"type":"paragraph","text":"Come build with DigitalOcean!","spans":[]},{"type":"paragraph","text":"Looking to migrate your SaaS to DigitalOcean? Leverage free infrastructure credits, robust training, and technical support to ensure a worry-free migration.","spans":[{"start":0,"end":156,"type":"strong"},{"start":0,"end":156,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/migrate/?utmmedium=blog","target":"_blank"}}]},{"type":"paragraph","text":"","spans":[]},{"type":"paragraph","text":"Raman Sharma","spans":[]},{"type":"paragraph","text":"Vice President, Product & Programs Marketing","spans":[]}],"tags":[{"tag1":{"__typename":"PRISMIC_Tag","tag":"Developer Relations","_linkType":"Link.document","_meta":{"uid":"developer-relations"}}}],"author":{"__typename":"PRISMIC_Author","author_name":"Raman Sharma","author_image":{"dimensions":{"width":512,"height":512},"alt":null,"copyright":null,"url":"https://images.prismic.io/www-static/497b4b14-d192-493a-8b66-7ae176ba99f3_raman.png?auto=compress,format"},"_meta":{"uid":"raman-sharma"}},"_meta":{"uid":"how-to-scale-your-saas-product-without-breaking-the-bank"}}}}]}}},"pageContext":{"limit":12,"skip":204,"numPages":33,"currentPage":18,"data":[{"node":{"author":{"_linkType":"Link.document","author_name":"Sneha Inguva","author_image":{"dimensions":{"width":1086,"height":1086},"alt":"Sneha Inguva","copyright":null,"url":"https://images.prismic.io/www-static/7ced102cd11b18e75c8d62a2af51fb429ac9e3fa_10710453_10152371929930870_2991868467032627208_o.jpg?auto=compress,format"},"_meta":{"uid":"sneha_inguva"}},"blog_header_image":{"dimensions":{"width":784,"height":418},"alt":"abstract binoculars graphic with graphs illustration","copyright":null,"url":"https://images.prismic.io/www-static/cc1e4a831dc2079d8cab32ca14ee3fec60cdbb2d_observability_blog.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"The Why, How, and What of Metrics and Observability","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"If you are reading this post, you are probably aware that DigitalOcean is an infrastructure company. (And if you weren't aware of that: surprise!) As a cloud platform provider, we have a varied tech stack ranging from the many services that power the cloud, from hardware to virtualization software, and even container orchestration tooling. But with many moving pieces comes a vital need: that of observability. Observability is often defined as consisting of three “pillars”: logging, metrics, and tracing. In this post, however, I will focus on metrics, namely how we at DigitalOcean have leveraged Prometheus and Alertmanager for whitebox monitoring both our services and our container clusters. Whether you are a software engineer writing services or an operations engineer maintaining a container orchestration solution, these monitoring and alerting examples should prove useful.","spans":[]},{"type":"heading2","text":"More to Monitoring Than “Knowing When Things Break”","spans":[]},{"type":"paragraph","text":"Before delving into the what and how of monitoring, however, I’ll first focus on the why: specifically, why you—an engineer—should monitor your applications or infrastructure stack. The immediate answer might be “to know when things break”, and naturally, alerting upon downtime or other metrics issues is a vital reason to set up monitoring. In fact, most applications at DigitalOcean have either a whitebox monitoring or blackbox monitoring setup and some basic downtime alerts (sometimes, we have both). But beyond just alerting, proper monitoring allows one to identify long-term trends, analyze performance issues, and set up visualizations. For example, every containerized application deployed on our Kubernetes clusters at DigitalOcean has an automatic dashboard generated with basic stats such as memory and CPU usage as well as traffic. Our clusters themselves also have dashboards. These are essential in visualizing general trends and for debugging during on call rotations:","spans":[]},{"type":"paragraph","text":"Fig. 1: doccserver application dashboard","spans":[{"start":0,"end":40,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/937739709938d3c2b30dc359fe7104e4bbd463e2_screen-shot-2017-11-02-at-4.18.22-pm.png?auto=compress,format","alt":"doccserver application dashboard","copyright":null,"dimensions":{"width":1600,"height":715}},{"type":"paragraph","text":"I also mentioned that we currently use Prometheus and Alertmanager for both monitoring and alerting: our hows of monitoring. The journey towards using this tooling is also quite interesting and one that I’ve had the opportunity to bear witness to. DigitalOcean originally leveraged Chef and a hodgepodge of scripts or CI/CD tools for provisioning, updates, and deployments. Nagios was commonly utilized (and still is) to perform blackbox monitoring on hosts. This, however, was not enough. While blackbox monitoring is one piece of the puzzle, it doesn’t provide sufficient introspection into applications or truly help with debugging a variety of issues. As a result, engineers went through a long process of trying out several other solutions, which were always lacking in some element. Some were difficult to set up and operationally maintain while others didn’t provide useful visualizations or UX. Furthermore, actually leveraging the data for analysis proved difficult...but along came Prometheus and Alertmanager.","spans":[]},{"type":"paragraph","text":"Four base metrics types are at the core of Prometheus— counters, gauges, summaries, and histograms—which can be combined alongside a powerful query language with various functions for analysis and debugging. Prometheus proved to be extremely easy to install, either via a simple Go binary or Docker container. Furthermore, the fact that the time-series data was multidimensional proved immensely helpful, as our adoption of Prometheus coincided with our move towards containerization; having the ability to label data made analysis and aggregation all the more simple when using tools such as Kubernetes. As a result, Prometheus swiftly became our go-to tool for whitebox monitoring alongside Alertmanager for alerting.","spans":[]},{"type":"heading2","text":"Metrics: Leveraging The Four Golden Signals","spans":[]},{"type":"paragraph","text":"We’ve established the why and how of monitoring; let us now look into the what. Two categories of metrics we leverage at DigitalOcean are the four golden signals (of Google SRE-book fame) for our request-based microservices and USE metrics, which we heavily utilize to monitor our container orchestration clusters such as Kubernetes or Mesos.","spans":[]},{"type":"paragraph","text":"The four golden signals consist of latency, saturation, traffic, and error. Latency refers to the duration of requests; one important thing to note is that it is vital to consider the distribution of request duration, especially the longtail or 99th percentile. After all, what affects only a few of your users can often be an indication of impending saturation—another golden signal. Saturation itself is defined as the “fullness” of a system; it indicates how long something is waiting to be serviced. As a result, we often carefully track an alert based upon 95th or 99th percentile request latencies:","spans":[]},{"type":"paragraph","text":"Fig. 2: Kube-dns 95th percentile request latency in ms","spans":[{"start":0,"end":54,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/6bfe92349c292172693a7142c3493812714686c1_screen-shot-2017-11-02-at-5.40.58-pm.png?auto=compress,format","alt":"Kube-dns 95th percentile request latency in ms","copyright":null,"dimensions":{"width":1600,"height":562}},{"type":"paragraph","text":"Note that generating these metrics, and subsequently configuring alerts, is fairly easy using the Prometheus histogram metric type:","spans":[]},{"type":"preformatted","text":"histogram_quantile(0.95, sum(rate(kubedns_probe_kubedns_latency_ms_bucket[1m])) BY (le, kubernetes_pod_name)) > 1000  \n","spans":[]},{"type":"paragraph","text":"As histogram metrics are collected as counts in various buckets, we merely need to specify which percentile measurement we would like to calculate and leverage the histogram_quantile function. It is also possible to calculate latency quantiles using the summary metric by specifying the exact quantile we wish to track. While this may reduce quantile estimation error, it is a more expensive client side calculation.","spans":[]},{"type":"paragraph","text":"Now onto the final two golden signals! Traffic refers to the amount of demand placed on your system. In a request-based system, this is often measured in HTTP requests per second. In order to measure traffic using Prometheus, we often instrument our applications to expose a request count metric that is monotonically increasing and then calculate the per-second rate. Why? Looking at a constantly increasing counts alone would not provide any indication of abnormal traffic increases or decreases:","spans":[]},{"type":"paragraph","text":"Fig. 3: Note that request count constantly increases.","spans":[{"start":0,"end":53,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/78fdfd1a9cd78b1c8cd78af889093d18d026c51c_screen-shot-2017-10-13-at-11.09.45-am.png?auto=compress,format","alt":"Note that request count constantly increases","copyright":null,"dimensions":{"width":1600,"height":708}},{"type":"paragraph","text":"However, looking at rate of requests gives us a meaningful idea of traffic; we can then subsequently set up alerts for per-second rate exceeding above or dropping below a particular value:","spans":[]},{"type":"paragraph","text":"Fig. 4:  By applying rate() over a 15 minute window, we get a meaningful idea of traffic.","spans":[{"start":0,"end":89,"type":"em"},{"start":21,"end":27,"type":"strong"}]},{"type":"image","url":"https://images.prismic.io/www-static/de3c47c6bdefb7bbcf62e55b6f6c49224abff80f_screen-shot-2017-10-13-at-11.11.22-am.png?auto=compress,format","alt":null,"copyright":null,"dimensions":{"width":1600,"height":711}},{"type":"paragraph","text":"Error rates of failing or succeeding requests—the final golden signal—are calculated similarly. Applications are instrumented to expose error count with labels indicating status code or other information; per-second rate is then calculated to provide a meaningful metric:","spans":[]},{"type":"paragraph","text":"Fig. 5: Per-second error rate for cassandra","spans":[{"start":0,"end":43,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/a92fa433631daee608f47f82fdfede307b2fb917_screen-shot-2017-11-02-at-7.42.37-pm.png?auto=compress,format","alt":"Per-second error rate for cassandra","copyright":null,"dimensions":{"width":1600,"height":667}},{"type":"paragraph","text":"Note that the per-second rate suddenly spiked but decreased. However, as this was lower than  the alert configured below (at 50 errors per-second), no alert was triggered:","spans":[]},{"type":"preformatted","text":"sum(rate(cassandra_query_latency_count{docc_app=~\"timeseries-ingest-index[0-9]+\",result=\"error\"}[5m])) > 50  \n","spans":[]},{"type":"paragraph","text":"Using these four golden signals, we can gain a basic idea of both the health of our request-based services as well as an idea of our end user’s experiences. We can both visualize these metrics on a dashboard and also set up alerts for any abnormal metrics.","spans":[]},{"type":"paragraph","text":"In addition to monitoring our services, we also monitor our infrastructure. As a former member of the team that maintained our container clusters, I noticed enormous benefits when leveraging the USE method: utilization, saturation, and errors. Coined by Brendan Gregg, the USE method allows one to solve “80% of server issues with 5% of the effort”.","spans":[{"start":269,"end":348,"type":"hyperlink","data":{"link_type":"Web","url":"http://www.brendangregg.com/usemethod.html"}}]},{"type":"paragraph","text":"Let us take a look at how we leveraged these metrics to monitor our Kubernetes clusters. Each cluster consists of multiple worker nodes known as kubelets. Monitoring overall CPU, memory utilization, and reservation on these nodes has proven essential:","spans":[]},{"type":"paragraph","text":"Fig. 6: Kubernetes worker node CPU utilization for a single worker node","spans":[{"start":0,"end":71,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/1b455355a13fb3166aef62e50ef6bc1c06d3f864_screen-shot-2017-11-22-at-3.03.11-pm.png?auto=compress,format","alt":"Kubernetes worker node CPU utilization for a single worker node","copyright":null,"dimensions":{"width":1600,"height":806}},{"type":"paragraph","text":"Note that CPU utilization is measured in CPU seconds, a constantly increasing counter. As a result, calculating the per-second rate of CPU seconds gives us the number of CPU cores being utilized at a given time. We can further tweak this calculation to craft an alert to detect greater than a given percentage of CPU utilization on a worker node. (If interested in how exactly to do this, be sure to check out this blog post.)","spans":[]},{"type":"paragraph","text":"Another key component of our Kubernetes architecture is our HAProxy ingress load balancers; these are components in our network stack and direct much of outside traffic to appropriate services within the cluster. As you can imagine, load balancer connection utilization and saturation are therefore vital to measure:","spans":[]},{"type":"paragraph","text":"Fig. 7: Ingress load balancer connection utilization as a %","spans":[{"start":0,"end":59,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/180e998c35e2802132d9300d468b3d88d7edb5dd_screen-shot-2017-11-02-at-8.37.06-pm.png?auto=compress,format","alt":"Ingress load balancer connection utilization as a %","copyright":null,"dimensions":{"width":1600,"height":671}},{"type":"paragraph","text":"If all connections are utilized to an ingress load balancer, no additional connections can be made until some are dropped. As a result, we also elect to alert for greater than 50% load balancer connection utilization:","spans":[]},{"type":"preformatted","text":"max(haproxy_frontend_current_sessions / haproxy_frontend_limit_sessions) BY (kubernetes_node_name, frontend) * 100 > 50  \n","spans":[]},{"type":"heading2","text":"Conclusion","spans":[]},{"type":"paragraph","text":"And there you have it— a small slice of our monitoring and alerting setup at DigitalOcean! With these few examples, hopefully you can see how and why we have elected to leverage the four golden signals and the USE method to monitor and alert on our microservices and container clusters. Doing so has allowed both ops teams and service owners to maintain observability of running applications and key infrastructure. We have also leveraged this data to track long-term trends and look into improving performance. Hopefully you can do the same!","spans":[]},{"type":"heading3","text":"Sources:","spans":[]},{"type":"paragraph","text":"[1] Logs and Metrics, Cindy Sridharan. https://medium.com/@copyconstruct/logs-and-metrics-6d34d3026e38","spans":[{"start":39,"end":102,"type":"hyperlink","data":{"link_type":"Web","url":"https://medium.com/@copyconstruct/logs-and-metrics-6d34d3026e38"}}]},{"type":"paragraph","text":"[2] Chapter 6: Monitoring Distributed Systems. Site Reliability Engineering at Google. https://landing.google.com/sre/book/index.html","spans":[{"start":87,"end":133,"type":"hyperlink","data":{"link_type":"Web","url":"https://landing.google.com/sre/book/index.html"}}]},{"type":"paragraph","text":"[3] USE Method. Brendan Gregg. http://www.brendangregg.com/usemethod.html","spans":[{"start":31,"end":73,"type":"hyperlink","data":{"link_type":"Web","url":"http://www.brendangregg.com/usemethod.html"}}]},{"type":"paragraph","text":"[4] An Appropriate Use of Metrics. Martin Fowler. https://martinfowler.com/articles/useOfMetrics.html","spans":[{"start":50,"end":101,"type":"hyperlink","data":{"link_type":"Web","url":"https://martinfowler.com/articles/useOfMetrics.html"}}]},{"type":"paragraph","text":"[5] Monitoring and Observability. Cindy Sridharan. https://medium.com/@copyconstruct/monitoring-and-observability-8417d1952e1c","spans":[{"start":51,"end":126,"type":"hyperlink","data":{"link_type":"Web","url":"https://medium.com/@copyconstruct/monitoring-and-observability-8417d1952e1c"}}]},{"type":"paragraph","text":"Sneha Inguva is an enthusiastic software engineer working on building developer tooling at DigitalOcean. Previously, Sneha worked at a number of startups. Her experience across an eclectic range of verticals, from education to 3D printing to casinos, has given her a unique perspective on building and deploying software. When she isn't bashing away on a project or reading about the latest emerging technology, Sneha is busy molding the minds of young STEM enthusiasts in local NYC schools.","spans":[{"start":0,"end":491,"type":"em"}]}],"blog_post_date":"2017-11-29","tags":[{"tag1":{"tag":"Engineering","_linkType":"Link.document","_meta":{"uid":"engineering"}}}],"_meta":{"uid":"observability-and-metrics"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"Stephanie Morillo","author_image":{"dimensions":{"width":188,"height":188},"alt":"Stephanie Morillo","copyright":null,"url":"https://images.prismic.io/www-static/88c5ec7b08345ce34cc82af6a32619bee69b1dae_stephanie_morillo-abc491ab.png?auto=compress,format"},"_meta":{"uid":"stephanie_morillo"}},"blog_header_image":{"dimensions":{"width":2048,"height":1024},"alt":"Hacktoberfest sticker on laptop illustration","copyright":null,"url":"https://images.prismic.io/www-static/ff7c20e45c311dc39f3e324097dcb06f36f107c5_hacktoberfest17-twfb-sticker.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Hacktoberfest 2017 at a Glance","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"Hacktoberfest 2017, which ended this past October 31, was epic by any measure. It saw the greatest level of participation of any Hacktoberfest ever; in 2016, 10,227 participants completed the challenge, and this year, 31,901 successfully submitted all 4 pull requests. Companies like SendGrid also ran their own Hacktoberfest-inspired contents, and we saw contributions to 64,166 projects.","spans":[{"start":0,"end":18,"type":"strong"}]},{"type":"heading2","text":"Contributors","spans":[]},{"type":"paragraph","text":"As in previous years, developers in the open source community shared some of their Hacktoberfest stories:","spans":[]},{"type":"preformatted","text":"Open source is seriously amazing. 85 people contributed code to @Home_assistant in last 2 weeks. 625 pull requests merged for #Hacktoberfestpic.twitter.com/pgwWH3vqJ3\n— Paulus Schoutsen (@balloob) November 4, 2017","spans":[{"start":64,"end":79,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/home_assistant?ref_src=twsrc%5Etfw"}},{"start":126,"end":140,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/Hacktoberfest?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":140,"end":166,"type":"hyperlink","data":{"link_type":"Web","url":"https://t.co/pgwWH3vqJ3"}},{"start":197,"end":213,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/balloob/status/926700913535758336?ref_src=twsrc%5Etfw"}}]},{"type":"preformatted","text":"Man, #Hacktoberfest is really awesome! 📖 vue-chartjs docs got some cool new translations pic.twitter.com/uEAatFZzFe\n— 👨‍🚀 Jakub Juszczak (@apertureless) October 12, 2017","spans":[{"start":5,"end":19,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/Hacktoberfest?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":89,"end":115,"type":"hyperlink","data":{"link_type":"Web","url":"https://t.co/uEAatFZzFe"}},{"start":153,"end":169,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/apertureless/status/918501539475542016?ref_src=twsrc%5Etfw"}}]},{"type":"preformatted","text":"So #proud of the mega amazing #python gals from #shefcodefirst that have completed #Hacktoberfest 🎃👩🏻‍💻 you're #awesome@CodeFirstGirls\n— Tania Sanchez 💀👩🏻 (@ixek) October 31, 2017","spans":[{"start":3,"end":9,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/proud?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":30,"end":37,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/python?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":48,"end":62,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/shefcodefirst?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":83,"end":97,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/Hacktoberfest?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":111,"end":119,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/awesome?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":119,"end":134,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/CodeFirstGirls?ref_src=twsrc%5Etfw"}},{"start":163,"end":179,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/ixek/status/925396019700957185?ref_src=twsrc%5Etfw"}}]},{"type":"paragraph","text":"Not to be outdone, first-time contributors also discussed what it was like opening their first pull requests both via blog posts and on Twitter:","spans":[{"start":114,"end":128,"type":"hyperlink","data":{"link_type":"Web","url":"https://hackernoon.com/my-first-pull-request-to-openfaas-a-major-open-source-project-d0c823790691"}}]},{"type":"preformatted","text":"Thanks to #Hacktoberfest I just submitted my first OSS PR! Attempted some minor fixes to nodeschool.io since I got a lot out of @nodeschool!\n— Annette (@interannette) October 30, 2017","spans":[{"start":10,"end":24,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/Hacktoberfest?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":128,"end":139,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/nodeschool?ref_src=twsrc%5Etfw"}},{"start":167,"end":183,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/interannette/status/924811711466688512?ref_src=twsrc%5Etfw"}}]},{"type":"preformatted","text":"Success! I completed the #Hacktoberfest challenge! 🤓 As a first time contributor, I chanced a PR to @angular material. #gobigorgohomepic.twitter.com/SDRvvf8UlT\n— Alisa (@AlisaDuncan) October 28, 2017","spans":[{"start":25,"end":39,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/Hacktoberfest?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":100,"end":108,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/angular?ref_src=twsrc%5Etfw"}},{"start":119,"end":133,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/gobigorgohome?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":133,"end":159,"type":"hyperlink","data":{"link_type":"Web","url":"https://t.co/SDRvvf8UlT"}},{"start":183,"end":199,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/AlisaDuncan/status/924407808702976001?ref_src=twsrc%5Etfw"}}]},{"type":"preformatted","text":"Today I've created my first pull request ever for #Hacktoberfest, it wasn't big but it feels awesome! #AndroidDev\n— Paul Núñez (@paulnunezm) October 24, 2017","spans":[{"start":50,"end":64,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/Hacktoberfest?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":102,"end":113,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/hashtag/AndroidDev?src=hash&amp;ref_src=twsrc%5Etfw"}},{"start":141,"end":157,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/paulnunezm/status/922650740887375873?ref_src=twsrc%5Etfw"}}]},{"type":"heading2","text":"Events","spans":[]},{"type":"paragraph","text":"As Hacktoberfest-themed Meetups entered its second year, we saw an uptick in participation from around the world. This year, events were organized in 119 locations around the world, with first-ever Hacktoberfest Meetups held in 27 countries including Australia, Bosnia & Herzegovina, Brazil, Colombia, Indonesia, Israel, Malaysia, Mexico, Nepal, Nigeria, Pakistan, Peru, Philippines, Romania, Russia, Sri Lanka, and Taiwan!","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/6f95fa6b1dfbcf10d492d4622e21f4d8b38e828e_map_08.png?auto=compress,format","alt":"HF Events Map","copyright":null,"dimensions":{"width":1024,"height":512}},{"type":"heading2","text":"Looking Ahead","spans":[]},{"type":"paragraph","text":"Thank you to our friends at GitHub for embarking on yet another Hacktoberfest with us. And thank you to the countless folks on social media and open source communities around the world who encouraged even more people to participate!","spans":[]},{"type":"paragraph","text":"If you finished your 4 pull requests, you should’ve received an email about your T-shirt. Still have questions? Reach out to us at hacktoberfest@digitalocean.com.","spans":[{"start":131,"end":161,"type":"hyperlink","data":{"link_type":"Web","url":"mailto:hacktoberfest@digitalocean.com"}}]},{"type":"paragraph","text":"What Hacktoberfest stories do you want to share? Tell us in the comments below.","spans":[]},{"type":"paragraph","text":"See you all in 2018; happy hacking!","spans":[]},{"type":"heading4","text":"Update March 2018","spans":[]},{"type":"paragraph","text":"The last shipment of Hacktoberfest 2017 T-shirts has gone out. We experienced some issues with shipping this year, and we're sorry if you were waiting for a shirt and haven't received one. However, we're making changes to improve the shipping process in 2018. Thank you for your understanding.","spans":[]}],"blog_post_date":"2017-11-21","tags":[{"tag1":{"tag":"Community","_linkType":"Link.document","_meta":{"uid":"community"}}}],"_meta":{"uid":"hacktoberfest-2017-recap"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"Jackie De La Rosa","author_image":{"dimensions":{"width":2000,"height":3000},"alt":"Jackie De La Rosa","copyright":null,"url":"https://images.prismic.io/www-static/121b1771614e0abec4db5f081a1782f4957f2a61_delarosa-j-photo--1-.jpg?auto=compress,format"},"_meta":{"uid":"jackie_de_la_rosa"}},"blog_header_image":{"dimensions":{"width":784,"height":418},"alt":"laptop with hands illustration","copyright":null,"url":"https://images.prismic.io/www-static/587063ed5e2e34670ac8e0232f2e9543e0854ab8_hackathon_blog.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Lessons from Organizing Company-wide Hackathons","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"When I joined DigitalOcean in October 2016 as Chief of Staff to our CTO, one of my first tasks was to organize a company-wide Hackathon. I was intrigued as to why our leadership was so excited about a Hackathon; in my mind, it was an event for employees to work together and collaborate similar to a DO basketball game or dinner outing. Why were they so interested in the company-wide participation?","spans":[]},{"type":"paragraph","text":"I did not get my answer until after the Hackathon. I realized not only were there positive outcomes around collaboration and team-building, but the actual outputs were extremely innovative, intelligent, and productive. As our VP of Engineering Greg Warden put it, “I love seeing the passion and ideas from people I don’t always interact with. The best ideas come from the most curious of places.” Enough said!","spans":[]},{"type":"paragraph","text":"Over the past year, we’ve successfully hosted three Hackathons. From our initial Hackathon of 120 participants, we’ve successfully increased our participation to over 40% of our 380+ employee company. In order to achieve this growth, we constantly iterated each event. We’ve added guest technical judges to help evaluate the more complicated projects, extended the pitching time from 120 seconds to 5 minutes, and  brought in  fun extras like a barista, late night pizza, and happy hour. To foster a healthy sense of friendly competition, we give awards in categories like \"Best Business Solution\", \"Best Technology\", \"Most Cross-functional Team\", and \"People’s Choice\". All of our Hackathon participants get fun swag, too!","spans":[]},{"type":"paragraph","text":"One of the best parts of the Hackathon is seeing projects that end up becoming a part of our internal toolset. Some notable past winners include:","spans":[]},{"type":"list-item","text":"Porthole, a design-centric search engine for our Control Panel, which will be considered for our future roadmap.","spans":[{"start":0,"end":8,"type":"strong"}]},{"type":"list-item","text":"Food Ratings, an app that allows users to quickly rate the day’s lunch (we offer catered lunches to employees in our NYC HQ and Cambridge, MA offices). You can rate either the specific meal you just ate (i.e. falafel, or a rice dish) and/or amount of protein available:","spans":[{"start":0,"end":12,"type":"strong"}]},{"type":"image","url":"https://images.prismic.io/www-static/478f020067d9d4b40a16446d9ce3f682018a9a6e_screen-shot-2017-11-13-at-12.03.42-pm.png?auto=compress,format","alt":"Food ratings screenshot","copyright":null,"dimensions":{"width":398,"height":99}},{"type":"list-item","text":"Plankton, a complex project that demonstrated how a large number of tiny Droplets (\"plankton\") could be used to divide and conquer a large task.  The plankton were designed to be as small and lightweight as possible, making it easy to spin up hundreds or thousands of them at a time. See the benefits below:","spans":[{"start":0,"end":8,"type":"strong"}]},{"type":"image","url":"https://images.prismic.io/www-static/494f78debece9cef6bfcb306297b8a43f6500699_screen-shot-2017-11-13-at-11.31.12-am.png?auto=compress,format","alt":"Plankton","copyright":null,"dimensions":{"width":288,"height":227}},{"type":"paragraph","text":"Many projects, including those mentioned above, focus not only on customer-facing tools, but they also optimize the employee experience. It was a unique balance, whereas some people focused on how they could improve their everyday life, while others looked to cloud computing.","spans":[]},{"type":"paragraph","text":"Here are five tips to consider for hosting a successful Hackathon.","spans":[]},{"type":"o-list-item","text":"Leadership support. Our CEO Ben Uretsky constantly sends company-wide emails weeks before the actual Hackathons to express his excitement and support. He encourages all employees to participate, and encourages managers to support team participation by setting aside time specifically for the Hackathon.","spans":[{"start":0,"end":18,"type":"strong"}]},{"type":"o-list-item","text":"Cross-functional participation. The teams that have created truly innovative products and addressed real, practical problems are cross-functional teams with members from all across the company. We put procedures in place to assure that both technical and non-technical people participate. Since Hackathons are technical in nature, it should be of the  utmost importance to encourage non-technical colleagues to join teams. Their skills are desperately needed. Because our workforce is 50% remote, this also added another complexity. How can we make it feel like one, centralized Hackathon all over the world? We encourage remote teams to all meet at one central location, even if it’s not our office in NYC. If that was not practical, we encouraged teams to hack via Google Hangout. Pitches are also live streamed so everyone can participate (and even pitch) to our remote employees.","spans":[{"start":0,"end":30,"type":"strong"}]},{"type":"o-list-item","text":"A work embargo. There are actually two parts to this point: 1) Make sure you get approval for a company-wide work embargo and get manager buy-in, and 2) Confirm you communicate that bottoms-up and top-down. When people are busy with work, teams are discouraged, lop-sided and usually s-t-r-e-s-s-e-d. To truly have focused teams, you need to cut out the noise (the noise being your routine daily responsibilities).","spans":[{"start":0,"end":14,"type":"strong"}]},{"type":"o-list-item","text":"No limitations on project ideas. If your Hackathon’s true mission is to support innovation within your company, the best rule is to have no (or very few) rules around projects. Allow your employees to work on whatever they want, whatever problem they have witnessed, or pain point that needs addressing. The only rules we had were to disallow leadership from participating (because they were judges and resources), and for projects to be somehow relevant to DO.","spans":[{"start":0,"end":31,"type":"strong"}]},{"type":"o-list-item","text":"Fun! Some Hackathons can still feel like work, and at some points, can be even more challenging (I only have 48 hours to make a super impressive product? Ugh!). But adding fun events, food vendors, and breaks makes it more enjoyable. At DO, we hired a barista to make delicious artisanal coffees, and we had pizza parties, and donut breaks.","spans":[{"start":0,"end":4,"type":"strong"}]},{"type":"paragraph","text":"Company-wide Hackathons are a great way to promote company cohesion in a fun and relaxed atmosphere. They give people room to be creative and to work with people across teams that they would normally not interface with in their day-to-day life. By giving people the space to experiment, tinker, and get to know each other, you give them permission to create something of value to themselves and even the company at large.","spans":[]},{"type":"paragraph","text":"A scene from our most recent Hackathon this past October.","spans":[{"start":0,"end":57,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/52d5e68dbc2d69199b766701ab26f416c1fe985d_dsc00803.jpg?auto=compress,format","alt":null,"copyright":null,"dimensions":{"width":3813,"height":2547}},{"type":"paragraph","text":"Jackie De La Rosa is a Senior Program Manager at DigitalOcean and focuses on overall strategy, business operations and executive initiatives. She was one of the first employees at DigitalOcean’s second office in Cambridge, Massachusetts.","spans":[{"start":0,"end":237,"type":"em"}]}],"blog_post_date":"2017-11-14","tags":[{"tag1":{"tag":"Culture","_linkType":"Link.document","_meta":{"uid":"culture"}}}],"_meta":{"uid":"company-hackathons"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"John Gannon","author_image":{"dimensions":{"width":188,"height":188},"alt":"John Gannon","copyright":null,"url":"https://images.prismic.io/www-static/c168397537fa6de301e8f96c1d3aa74bdd6b8e4b_john_gannon-02f76ff8.png?auto=compress,format"},"_meta":{"uid":"john_gannon"}},"blog_header_image":{"dimensions":{"width":780,"height":416},"alt":"Illustration of night time buildings skyline","copyright":null,"url":"https://images.prismic.io/www-static/b3fb87675b25be6452dc05ffe5a9ba52306f5eb2_screen-shot-2017-11-06-at-3.51.41-pm.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Spaces Object Storage: Now Available in Amsterdam and New York","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"Today we’re excited to announce the expansion of DigitalOcean Spaces to Amsterdam (AMS3).  Spaces is a simple, standalone object storage service that enables developers to store and serve any amount of data with automatic scalability, performance, and reliability.  With today’s announcement, Spaces now has locations in New York and Amsterdam, with more regions on the roadmap for early 2018.","spans":[{"start":49,"end":88,"type":"strong"}]},{"type":"paragraph","text":"Object storage has been one of the most requested products that we’ve been asked to  build. When we embarked on developing a scalable storage product that is abstracted from compute resources, we realized we had an opportunity to refactor and improve how developers solve this problem today.","spans":[]},{"type":"heading2","text":"Pricing","spans":[]},{"type":"paragraph","text":"We believe in simplifying our products to enable developers to build great software. To do that, we look at every opportunity to remove friction from the development process including spending less time estimating costs associated with storage, transfer, number of requests, pricing tiers, and regional pricing.","spans":[]},{"type":"paragraph","text":"Spaces is available for a simple $5 per month price and includes 250GB of storage and 1TB of outbound bandwidth. There are no costs per request and additional storage is priced at the lowest rate available: $0.01 per GB transferred and $0.02 per GB stored. Uploads are free.","spans":[{"start":33,"end":45,"type":"strong"},{"start":65,"end":70,"type":"strong"},{"start":86,"end":89,"type":"strong"},{"start":207,"end":219,"type":"strong"},{"start":236,"end":248,"type":"strong"}]},{"type":"paragraph","text":"Spaces provides cost savings of up to 10x along with predictable pricing and no surprises on your monthly bill.","spans":[{"start":16,"end":41,"type":"strong"}]},{"type":"heading2","text":"Scales with Your Data","spans":[]},{"type":"paragraph","text":"Spaces is designed to scale automatically; as your application data grows, you won't need to worry about scaling any storage infrastructure. Although your Space can be configured to be accessed from anywhere, we realize that some customers prefer to keep their data close to their customers or to their own compute nodes.","spans":[]},{"type":"paragraph","text":"To that end, Spaces is available in NYC3 and AMS3. More global regions will follow in early 2018—stay tuned for future updates.","spans":[]},{"type":"heading2","text":"Designed for Developers","spans":[]},{"type":"paragraph","text":"Our goal was to simplify the essential components of object storage into a clean design. We tested several designs with developers to ensure Spaces was easy to use and manage with deployed applications. With Spaces, you can:","spans":[]},{"type":"list-item","text":"Create a Space in two clicks; just give your Space a name and you’re off to the races.","spans":[]},{"type":"list-item","text":"Drag-and-drop uploads and use multi-select capabilities, with more improvements to come.","spans":[]},{"type":"list-item","text":"Quickly change permissions and metadata for one to many files at once. This comes in handy when you’re setting up your application to sit behind a CDN, or applying uniform permissions and metadata across a large number of files.","spans":[]},{"type":"paragraph","text":"You can use your favorite storage management tools and libraries with Spaces. A large ecosystem of S3-compatible tools and libraries can be used to manage your Space. (We’ve published articles about some of these tools on our Community site; find the links in the “Getting Started” section below.)","spans":[{"start":78,"end":165,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/how-to-migrate-from-amazon-s3-to-digitalocean-spaces-with-rclone"}}]},{"type":"heading2","text":"Secure, Reliable, and Performant","spans":[]},{"type":"paragraph","text":"Files you store in Spaces are encrypted on physical disks with 256-bit AES-XTS full-disk encryption. In addition, you can encrypt files with your own keys before uploading them to Spaces. You can limit access to Spaces and the files within using your Spaces API key(s) and permissioning.","spans":[]},{"type":"paragraph","text":"Files stored in Spaces are distributed using a fault-tolerant placement technique called erasure coding. Spaces can tolerate multiple host failures without blocking any client I/O or experiencing any data loss.","spans":[{"start":89,"end":103,"type":"hyperlink","data":{"link_type":"Web","url":"http://searchstorage.techtarget.com/definition/erasure-coding"}}]},{"type":"paragraph","text":"Spaces is designed to provide high availability for storing and serving web assets, media, backups, log files, and application data. At DigitalOcean, we use Spaces for a variety of applications including serving of web assets (html, images, js) for cloud.digitalocean.com, and for backups of data critical to our business. During the early access period, thousands of users stored millions of objects and Spaces performed as expected with high throughput.","spans":[]},{"type":"heading2","text":"Getting Started","spans":[]},{"type":"paragraph","text":"Join the hundreds of thousands of customers who already set up a Space since we’ve launched. Find out more about how your application could use Spaces for cost effective and scalable object storage by reading these articles and tutorials:","spans":[]},{"type":"heading4","text":"Overview","spans":[]},{"type":"list-item","text":"Object Storage vs. Block Storage","spans":[{"start":0,"end":32,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/object-storage-vs-block-storage-services"}}]},{"type":"list-item","text":"An Introduction to DigitalOcean Spaces","spans":[{"start":0,"end":38,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces"}}]},{"type":"heading4","text":"API Documentation","spans":[]},{"type":"list-item","text":"DigitalOcean Spaces API","spans":[{"start":0,"end":23,"type":"hyperlink","data":{"link_type":"Web","url":"https://developers.digitalocean.com/documentation/spaces/"}}]},{"type":"heading4","text":"Migrating","spans":[]},{"type":"list-item","text":"How to Migrate from Amazon S3 to DigitalOcean Spaces with rclone","spans":[{"start":0,"end":64,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/how-to-migrate-from-amazon-s3-to-digitalocean-spaces-with-rclone"}}]},{"type":"heading4","text":"Command-Line Clients","spans":[]},{"type":"list-item","text":"How To Configure s3cmd 2.x To Manage DigitalOcean Spaces","spans":[{"start":0,"end":56,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/how-to-configure-s3cmd-2-x-to-manage-digitalocean-spaces"}}]},{"type":"list-item","text":"How to Manage DigitalOcean Spaces with s3cmd: A Cheat Sheet","spans":[{"start":0,"end":59,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/how-to-manage-digitalocean-spaces-with-s3cmd"}}]},{"type":"heading4","text":"GUI Clients","spans":[]},{"type":"list-item","text":"How To Manage DigitalOcean Spaces with Transmit 4","spans":[{"start":0,"end":49,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/how-to-manage-digitalocean-spaces-with-transmit-4"}}]},{"type":"list-item","text":"How To Manage DigitalOcean Spaces with Cyberduck 6.2.x","spans":[{"start":0,"end":54,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/how-to-manage-digitalocean-spaces-with-cyberduck"}}]},{"type":"paragraph","text":"We’ll be adding new features and regions over the coming months and look forward to hearing your feedback!","spans":[]}],"blog_post_date":"2017-11-08","tags":[{"tag1":{"tag":"Product Updates","_linkType":"Link.document","_meta":{"uid":"product-updates"}}}],"_meta":{"uid":"introducing-spaces-object-storage"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"Prabhakar (PJ) Jayakumar","author_image":null,"_meta":{"uid":"prabhakar_pj_jayakumar"}},"blog_header_image":{"dimensions":{"width":784,"height":418},"alt":"Developers talking illustration","copyright":null,"url":"https://images.prismic.io/www-static/3e9315885629e893bd55010da12acaef9ee0f4f2_tiderecap_blog.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"DO India’s Q4 Update: Conferences, Webinars, and More","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"A lot has happened since our last update from DO India. India continues to be DigitalOcean’s fastest growing international market, and we’re always thinking about the best ways to serve the needs of the local developer community.","spans":[{"start":25,"end":54,"type":"hyperlink","data":{"link_type":"Web","url":"https://blog.digitalocean.com/looking-back-at-digitaloceans-first-year-in-india/"}}]},{"type":"paragraph","text":"In this post, we’ll share the latest happenings from DO India, including:","spans":[]},{"type":"list-item","text":"A recap of the latest edition of Tide, our user conference in India;","spans":[]},{"type":"list-item","text":"A preview of the Campus Champ contest for student developers and entrepreneurs in Indian universities, and;","spans":[]},{"type":"list-item","text":"Information about a free webinar series on containers and orchestration (open to everyone around the world).","spans":[]},{"type":"heading2","text":"The Rising Tide","spans":[]},{"type":"paragraph","text":"In early October, we hosted the third edition of our user conference, Tide, in Mumbai. With over 250 in attendance, participants got the opportunity to learn best practices for managing and scaling applications in the cloud via hands-on workshops, attend talks by startup founders, and build new connections with people from the local ecosystem, including fellow developers, entrepreneurs, mentors, and VCs.","spans":[{"start":49,"end":75,"type":"hyperlink","data":{"link_type":"Web","url":"https://do.co/tide"}}]},{"type":"paragraph","text":"Scenes from October's Tide Conference in Mumbai.","spans":[{"start":0,"end":48,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/a68f16b357813859fe7506e677d59a03dd948c06_tiderecap_collage.png?auto=compress,format","alt":"Tide 2017 Collage","copyright":null,"dimensions":{"width":1000,"height":1000}},{"type":"paragraph","text":"The conference saw more than 20 influencers speaking on a diverse set of topics relevant to developer and startup communities, including:","spans":[]},{"type":"list-item","text":"“The manual for Indian startups” where Vijay Kumar Ivaturi (ex-CTO of Wipro and Co-founder and CTO of Crayon Data) shared interesting insights about the startup ecosystem and a candid take on his experience authoring a book with the same title.","spans":[{"start":0,"end":32,"type":"hyperlink","data":{"link_type":"Web","url":"https://youtu.be/gwmrrnROvu8?list=PLseEp7p6EwiZgNoUeHDh-sobxGFr4Mijm"}}]},{"type":"list-item","text":"“Technology decisions for building a scalable business” where CTOs from high growth startups—Devendra Rane (CoverFox), Suresh Kondamudi (CleverTap), Priyadarshi Lahiri (Edge Networks) and Ankit Tomar (Bizongo)—shared their experiences, challenges, and frameworks for choosing the tech stack at their businesses.","spans":[{"start":0,"end":55,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.youtube.com/watch?v=wgrLB-qhFJI&amp;index=4&amp;list=PLseEp7p6EwiZgNoUeHDh-sobxGFr4Mijm"}}]},{"type":"list-item","text":"An inspiring talk by Ajeet Khurana (Mentor and Angel Investor) on “what Indian entrepreneurs really need today”.","spans":[{"start":66,"end":111,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.youtube.com/watch?v=1EcuWfu6duY&amp;list=PLseEp7p6EwiZgNoUeHDh-sobxGFr4Mijm&amp;index=8"}}]},{"type":"paragraph","text":"Head over to our YouTube channel to watch video recordings of these and other interesting talks and panel discussions.","spans":[{"start":36,"end":117,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.youtube.com/playlist?list=PLseEp7p6EwiZgNoUeHDh-sobxGFr4Mijm"}}]},{"type":"heading2","text":"Bringing Out the Best in Student Developers","spans":[]},{"type":"paragraph","text":"Campus Champ is a contest that aims to identify and recognize the best student developers and entrepreneurs across Indian universities by providing them a platform to showcase their product design and development capabilities. We were enthused by the participation and by the product ideas that came about in our inaugural edition of the contest organized in 2016.","spans":[{"start":0,"end":12,"type":"strong"}]},{"type":"paragraph","text":"This year’s edition of the contest is currently underway, and students are being tasked with building something useful and relevant to the community around them. The contest will run in two phases, with Phase 1 (ending on November 11th) requiring students to provide a brief write-up of the product idea and its potential utility and impact on the community. Phase 2 (running between November 16th and December 22nd) will involve the shortlisted student teams building on their idea and converting it into a working prototype. Outside of the experience, students get a chance to win attractive cash prizes and swag from DigitalOcean!","spans":[]},{"type":"paragraph","text":"We are excited to see the innovative projects that students will build in the current edition of the contest. If you are a student from India who wants to participate, sign up now for Campus Champ (registration closes Friday, November 10th).","spans":[{"start":168,"end":196,"type":"hyperlink","data":{"link_type":"Web","url":"https://do.co/champ"}}]},{"type":"heading2","text":"Learning More About Containers","spans":[]},{"type":"paragraph","text":"If you’re interested in learning more about containers and container orchestration, we’re hosting a free, 6-part webinar series led by cloud expert MSV Janakiram on Deploying and Managing Containerized Workloads in the Cloud. It will cover the essentials of containers including container lifecycle management, deploying multi-container applications, and scaling workloads. The series will also cover Kubernetes and highlight the architecture, deployment, and best practices of running stateful applications.","spans":[{"start":148,"end":161,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/janakiramm"}},{"start":165,"end":224,"type":"strong"}]},{"type":"paragraph","text":"This webinar series would be beneficial for developers of all skill levels interested in designing, developing, and deploying microservices and containerized applications. You can sign up for the webinars here and feel free to spread the word amongst friends or colleagues who may find these sessions useful.","spans":[{"start":180,"end":209,"type":"hyperlink","data":{"link_type":"Web","url":"https://go.digitalocean.com/containers-and-microservices-webinars-series"}}]},{"type":"paragraph","text":"As always, if you have any feedback or suggestions on how you would like to engage with DigitalOcean, let us know in the comments below. Happy holidays!","spans":[]},{"type":"paragraph","text":"Prabhakar Jayakumar (PJ) is Country Director (India) responsible for running DigitalOcean's operations in India. His team is focused on building out the DO community and supporting the localized needs of India’s developer and startup ecosystem.","spans":[{"start":0,"end":19,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.linkedin.com/in/prabhakarpj/"}},{"start":0,"end":244,"type":"em"}]}],"blog_post_date":"2017-11-06","tags":[{"tag1":{"tag":"Community","_linkType":"Link.document","_meta":{"uid":"community"}}}],"_meta":{"uid":"do-india-q4-update"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"Dave Malouf","author_image":{"dimensions":{"width":1829,"height":1926},"alt":"Dave Malouf","copyright":null,"url":"https://images.prismic.io/www-static/3b42971769309a31b5fdf915b034e347486e10ce_headshot-of-dave-malouf-1.jpg?auto=compress,format"},"_meta":{"uid":"dave_malouf"}},"blog_header_image":{"dimensions":{"width":900,"height":480},"alt":"Developer planning illustration","copyright":null,"url":"https://images.prismic.io/www-static/1d9dac39205dd7f74db7e5b91a32bf3480da689a_designops_blog_pat.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"An Introduction to Design Operations","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"If you’re reading this post, chances are you’re aware of the term “DevOps”. The term “DesignOps”, however, is probably not as familiar. You might try to connect DesignOps to DevOps in order to help you decipher its meaning. And you wouldn’t be entirely wrong, but you’d only be looking at the tip of the iceberg.","spans":[]},{"type":"paragraph","text":"Design operations (“DesignOps”) is a growing area of concern for design teams seeking to help their teams increase the value they produce for their host organizations and that organization’s customers. As this is a burgeoning area of interest, inconsistencies in the usage of “DesignOps”, both as a term and as a practice, still exists.","spans":[]},{"type":"paragraph","text":"In this blog post, I present my own thinking around DesignOps, which has been highly influenced by growing conversations among design peers from organizations like Autodesk, Uber, Airbnb, Pinterest, Expedia, and even non-technology companies like CapitalOne, Royal Bank of Canada (RBC), and GE.","spans":[]},{"type":"heading2","text":"Developer and Designer Tools Aren’t (Always) the Same","spans":[]},{"type":"paragraph","text":"If you’re a developer, you code. You might write code in TextEdit or Notepad and use FTP, or you might prefer editors like Emacs and vi. You can then start to add in other tools like an IDE, version control, or data repos. And you can eventually layer in a CI system and add issue tracking and automated testing. Each one of these layers of tools is meant to somehow make you better as a coder and more valuable to your organization. The choice of tools one uses is an operational decision.","spans":[{"start":469,"end":489,"type":"em"}]},{"type":"paragraph","text":"Operational systems, which are made up of processes, practices, and tools—like Agile, project management software (JIRA, etc), and quiet spaces and collaborative spaces—exist to make you as a developer more productive, thereby improving your output. All of these things aim to make you better at doing your craft: coding.","spans":[]},{"type":"paragraph","text":"In the design world, we contemplate similar things. Some operational systems support the design process itself; others support cross-functional collaboration with engineering to ensure design intentions are executed as closely as possible to what the design team had in mind. The last point in particular is the driving force behind design operations: how we collaborate, communicate, hand off deliverables, and partner with engineering has become a central part of how DesignOps evolved.","spans":[]},{"type":"paragraph","text":"While many organizations have operationalized their design teams by adopting the same tools developers use—JIRA, GitHub, or Confluence, for example—these decisions don’t account for the different tools and processes unique to the designer workflow. As design teams scale, using development tools and processes for design has the unintended consequence of diluting design value. Designers don’t use IDEs; they use graphic tools, and not even a singular graphic tool. Designers don’t share or collaborate on code via text files in open-source environments; they use a mix of vector and raster graphic formats that are often created in closed, proprietary systems. Designers don’t iterate the same way developers do (well, not all designers, and they shouldn’t). They'll explore multiple options at almost every stage of the design process. The concept of “forking” won’t scale when looking at 10-20 alternatives of a single microinteraction in the same file where 5-10 alternatives of a layout are managed.","spans":[]},{"type":"paragraph","text":"At the same time, the growing trend of creating design systems sometimes forces designers to work in files where they might have to interact with code on some level. These are usually meant to be points of interaction between designers and developers. As design systems are made up of components written with a mix of CSS, HTML, and JavaScript, using standard version control, issue management, and even Agile project management tools starts to make more sense.","spans":[]},{"type":"paragraph","text":"This creates a new type of complication for designers, where some operations use one type of system and another part requires something else entirely. The good news is this pushes designers to be more cognizant and intentional about how they use those systems, especially those within the direct lines of sight and communication of developers.","spans":[]},{"type":"heading2","text":"Organizing Design Teams","spans":[]},{"type":"paragraph","text":"Using different systems to manage assets is but one aspect of design operations, and operations as a whole is but one aspect of making individuals and teams get better at their craft. Human resource management is another important consideration for teams who want to amplify their value. And similar to the asset management areas of operations, different organizations will find different ways of managing and organizing their design teams.","spans":[]},{"type":"paragraph","text":"For example, many design teams centralize their workers in a single design group, assigning members to projects while still directly reporting to a single design leader. Other organizations do the opposite: designers are hired to work directly within project teams, and “guilds” are created to help manage their specific design needs.","spans":[]},{"type":"paragraph","text":"In summary, different organizational and team cultures require different solutions, which depend on many factors. And when accounting for other aspects of operations such as running design systems, design processes, and even research practices, DesignOps gets significantly more complex.","spans":[]},{"type":"heading2","text":"Resources","spans":[]},{"type":"paragraph","text":"We’ll share more insight into DigitalOcean’s specific DesignOps philosophy and processes in future blog posts. In the meantime, you can read more about DesignOps at Amplify Design.","spans":[{"start":165,"end":179,"type":"hyperlink","data":{"link_type":"Web","url":"http://medium.com/amplify-design"}}]},{"type":"paragraph","text":"If you’re in NYC, join us for the first-ever conference on the topic of DesignOps this November 6-8 at the Museum of the Moving Image, called the DesignOps Summit. DigitalOcean will be there and your team might find value in meeting with a broad group of people who are interested in cultivating an operational mindset to amplify the value of their design teams. We hope to see you there!","spans":[{"start":146,"end":162,"type":"hyperlink","data":{"link_type":"Web","url":"http://designopssummit.com"}}]},{"type":"paragraph","text":"Dave Malouf is the Director of Product Design at DigitalOcean. Dave’s 25+ year career in design includes enterprise, agency, and consumer spaces. He is a founder of the Interaction Design Association (IxDA) and has founded the Enterprise UX and the Design Ops Summit conferences. ave writes, speaks, and teaches around the world. You can find Dave talking about design, design leadership, and design operations on Twitter @daveixd, LinkedIn, and on Medium.","spans":[{"start":0,"end":456,"type":"em"},{"start":422,"end":430,"type":"hyperlink","data":{"link_type":"Web","url":"http://twitter.com/daveixd"}},{"start":432,"end":440,"type":"hyperlink","data":{"link_type":"Web","url":"http://linkedin.com/in/davidmalouf"}},{"start":449,"end":455,"type":"hyperlink","data":{"link_type":"Web","url":"http://medium.com/@daveixd"}}]}],"blog_post_date":"2017-10-31","tags":[{"tag1":{"tag":"Design","_linkType":"Link.document","_meta":{"uid":"design"}}}],"_meta":{"uid":"introduction-to-design-ops"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"Danny Arango","author_image":{"dimensions":{"width":639,"height":532},"alt":"Danny Arango","copyright":null,"url":"https://images.prismic.io/www-static/2a71f76a56ff0dd23e1c0d72a7ab688e434c23fe_13912913_10104133684160610_7874376075980757732_n-1.jpg?auto=compress,format"},"_meta":{"uid":"danny_arango"}},"blog_header_image":{"dimensions":{"width":784,"height":418},"alt":"People wearing shirts with a letter on them standing together they spell out interns illustration","copyright":null,"url":"https://images.prismic.io/www-static/46d70b47b1b2af3007c2472ff03b7e213733ec8e_interns_blog.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Tales from DigitalOcean’s Inaugural Intern Program","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"This past June, DigitalOcean welcomed its first-ever group of summer interns (who we endearingly called “minnows”). For 10 weeks, our interns worked in teams across the organization—from data to cloud engineering to marketing—based out of both our New York City HQ and Cambridge, MA office. (If you’re interested in becoming a Minnow, apply for a spot in our 2018 intern class (UPDATE: applications are now closed), or send us your questions at internships@digitalocean.com. We’re hiring interns for various teams including Product Management, User Experience, Engineering, Data & Analytics, and Marketing & Communications. And in the meantime, learn more about the hiring experience at DO.)","spans":[{"start":445,"end":473,"type":"hyperlink","data":{"link_type":"Web","url":"mailto:internships@digitalocean.com"}},{"start":662,"end":690,"type":"hyperlink","data":{"link_type":"Web","url":"https://blog.digitalocean.com/people-first-hiring-experience/"}}]},{"type":"paragraph","text":"The program was the culmination of years’ worth of research, planning, and recruitment. We knew companies large and small were reaping enormous quantitative and qualitative benefits by introducing internship programs, and we took a lot of care to craft something that would be an enriching experience for our interns, while providing real value to the teams they would be working with. We feel fortunate to have been able to support a talented cohort of people. (Three of them recount their experiences later in this post as they share what they worked on during the program.)","spans":[]},{"type":"heading2","text":"Determining The “Why” of an Internship Program","spans":[]},{"type":"paragraph","text":"To answer the question of when the right time would be to start an intern program, we considered a few things: How much does leadership buy into the concept? Can the program be structured in such a way that interns and their mentors get the guidance they need to be successful? Can we recruit a set of talented and diverse interns to bring added value to the company? For us, it started with a simple premise: how can we pay back our experiences to our community, especially younger technologists who love using DO to learn about tech? We wanted to pay it forward to young people who wanted to work in the cloud and help build the next set of great companies.","spans":[]},{"type":"paragraph","text":"At a startup, every team member’s time is critical. We knew we wanted to structure a program that allowed students the opportunity to network with our employees, learn from them, and contribute to the organization. Orienting their growth, with some guidance from the people who love developers and want to build tools for them, helped identify other areas they could explore. We were lucky to have this first set of great interns and we look forward to having more of them join our ranks in the coming years!","spans":[]},{"type":"paragraph","text":"(The Inaugural 2017 DO Intern Class. From top left to top right: Luke Grgas, Sasha Krutiy, Alisha KC, Evan Mena, Jordan Shea, Devin Morgan, Mariano Salinas, Anand Vyas, Kevin Wei. From bottom left to bottom right: Shweta Agrawal, Moises Eskinazi, Andrew Rouditchenko)","spans":[{"start":0,"end":267,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/8a66237971ddf34ee436c9fc850291fbd56a43b8_img_6128-2.jpg?auto=compress,format","alt":null,"copyright":null,"dimensions":{"width":1600,"height":1200}},{"type":"heading2","text":"Meet the Minnows","spans":[]},{"type":"paragraph","text":"For more on our inaugural class of interns, read some of their stories below. (We’re publishing a second post with even more intern stories later this fall—stay tuned!)","spans":[]},{"type":"heading4","text":"Devin Morgan, Support Tools Team intern","spans":[]},{"type":"paragraph","text":"DigitalOcean invests a significant amount of time and resources into monitoring for Droplets being used in DoS attacks, which I’ll call the Flood Monitoring System (FMS). The FMS uses data structures called FloodAlerts and FloodOccurrences to track when a Droplet has been flagged for “flooding” and to record information about the Droplet while it is flooding. This information then gets sent to an internal team that manually combs through the provided data and determines whether or not a flagged Droplet is acting legitimately or maliciously. However, as DigitalOcean’s customer base grew, the need to automate or semi-automate this process was becoming more serious. But, before DO could begin automating the FMS, certain infrastructure changes needed to be made.","spans":[]},{"type":"paragraph","text":"I also had to create a dashboard that displays real time, visual representations of information derived from the FloodAlert and FloodOccurrence (FAO) data. Because this job heavily involved distributed systems, some of the technologies that I worked with included Apache Kafka, Apache Hadoop, Apache Hive, and Apache Spark. Other technologies that I used included Golang, Python, gRPC, and PrestoDB.","spans":[]},{"type":"paragraph","text":"Both parts of this project were technologically challenging and forced me to learn a substantial amount in a short amount of time. I was very fortunate that the team I worked with knew their codebase and their tech stack inside and out and were incredibly willing to answer questions when I had them.","spans":[]},{"type":"heading4","text":"Shweta Agrawal, Product Management Team intern","spans":[]},{"type":"paragraph","text":"I was looking for firsthand experience owning a product and making an impact. I felt that owning a product as a PM intern would be valuable because it was actionable and results-oriented. I wanted to further hone my leadership skills, and learn how to scope down to an MVP feature and release it within a few weeks. My DO summer project was to improve One Click Apps, responsible for setting the vision for the product, and coordinating all aspects of One Click Apps product development, from creating the business case for adding new features to deciding when and what features should be retired.","spans":[]},{"type":"paragraph","text":"It was valuable to compare the product’s historical metrics with the success criteria, to see how it had been performing over time. I took time to research what users were really like and what goals they were trying to accomplish. I analyzed the data, looked at customer support tickets, and interviewed a few customers to figure out the problems users were having.","spans":[]},{"type":"paragraph","text":"The next step was to find solutions to these problems. I began by building hypotheses related to customer behavior and emotion. I had to wear several hats throughout the summer: I was responsible for identifying opportunities in the One Click Apps, launching two new One Click Apps to market, oversee them, and analyze metrics to ensure that they met the adoption goals. From writing specifications, prioritizing features, finalizing go-to-market, writing documentation, analyzing data, and coordinating with internal teams, I did it all.","spans":[]},{"type":"heading4","text":"Evan Mena, Insights Team intern","spans":[]},{"type":"paragraph","text":"As a hobbyist developer I’ve worked with many different programming languages and technologies to create things that I wanted for myself. While I tried to include what I considered to be relevant industry tools, such as git, into my independent workflow I’ve always wondered just how different the real world was from my solo and small team projects. During my internship, I was given the chance to participate in the development environment and cycle on the Insights team. I got the chance to work on a real feature that will provide value to both the company and end users. My code received the same care during review as a full time engineer, and getting feedback on my work as a software developer was wonderful.","spans":[]},{"type":"paragraph","text":"My project for the summer was to provide users a way of establishing webhooks for alerts related to their Droplets. A webhook is a way for an application to provide real time information to another application over HTTP. As an end-user you’ll register your webhook, receive a request with a challenge message on your webhook URL from DigitalOcean then verify that you control that URL by responding with the challenge message. Once the URL is verified it will be sent JSON payloads with information related to alerts when they occur. This is a fantastic addition to alert notifications as webhooks allow end-user developers to act programmatically when alerts occur. Rather than receiving an email or slack notification, a developer could write a small program that would receive webhook payloads and do nearly anything with them. They could log alerts and generate graphical output, make use of DigitalOcean’s API and adjust their server’s storage size automatically, or a myriad of other countless options. I developed this particular feature from end to end, working in EmberJS in the UI and writing request handlers in Go on the backend.","spans":[]},{"type":"paragraph","text":"In our next post, we’ll hear from interns who worked on our Cloud Engineering, Marketing, Networking, Data, Compute, and Frontend Infrastructure teams.","spans":[]},{"type":"paragraph","text":"Danny Arango is a Senior Tech Recruiter at DigitalOcean. He’s passionate about building diverse teams and finding the right fit for the right people at the right time. He’s also a raging Arsenal fan (both in the positive and negative sense) and will debate anyone on the merits of 1994 being the best year in hip hop history. Follow Danny on Twitter @ElPibe627.","spans":[{"start":0,"end":361,"type":"em"},{"start":350,"end":360,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.twitter.com/elpibe627"}}]}],"blog_post_date":"2017-10-25","tags":[{"tag1":{"tag":"Culture","_linkType":"Link.document","_meta":{"uid":"culture"}}}],"_meta":{"uid":"interns"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"Ben Schaechter","author_image":{"dimensions":{"width":250,"height":250},"alt":"Ben Schaechter","copyright":null,"url":"https://images.prismic.io/www-static/27dfbed4bc6fa68e0e2818d9c0f6065c21505b36_d9e56499ba79cfdd200bb4a6220f15f1.png?auto=compress,format"},"_meta":{"uid":"ben_schaechter"}},"blog_header_image":{"dimensions":{"width":784,"height":418},"alt":"Droplet over chip illustration","copyright":null,"url":"https://images.prismic.io/www-static/821a2a15e5339dba386a3a5ac2fe7a523c5ffca2_high-cpu-droplets_blog.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"High CPU Droplets Now Available in SGP1","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"Today, we’re excited to share that High CPU Droplet plans are now available in Singapore (SGP1). These Droplet plans are designed for CPU-intensive workloads including CI/CD servers, data analytics applications, and any application that requires more powerful underlying computing power.","spans":[{"start":35,"end":57,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/products/compute/"}}]},{"type":"paragraph","text":"With this expansion, Droplets are now available through the Control Panel and the API in NYC1, NYC3, AMS3, SFO2, SGP1, LON1, FRA1, TOR1, and BLR1.","spans":[]},{"type":"heading2","text":"Use Cases","spans":[]},{"type":"paragraph","text":"Here are some use cases that can benefit from CPU-optimized compute servers:","spans":[]},{"type":"list-item","text":"App servers. App servers with significant loads and powered by NodeJS require more CPUs than what’s available with standard Droplets. High CPU Droplets can improve application performance without paying for storage infrastructure you don’t need.","spans":[{"start":0,"end":12,"type":"strong"}]},{"type":"list-item","text":"CI/CD servers. Improve the performance of your Jenkins pipeline to rapidly deliver new functionality to production. With High CPU Droplets, Jenkins can speed up continuous integration and deployment times enabling you to quickly deploy features to production.","spans":[{"start":0,"end":14,"type":"strong"}]},{"type":"list-item","text":"Data analytics applications. More CPUs can improve the performance of data analytics, specifically for applications that require heavy computation. In these cases, choosing one High CPU Droplet with multiple, dedicated vCPUs provides both better performance and more favorable pricing than multiple, standard Droplets.","spans":[{"start":0,"end":28,"type":"strong"}]},{"type":"list-item","text":"Build servers. If you build applications using remote build servers (using the DO API to deploy build servers as needed), it can be more cost effective to use High CPU Droplets on demand to initiate and complete builds more quickly.","spans":[{"start":0,"end":14,"type":"strong"}]},{"type":"heading2","text":"Plans","spans":[]},{"type":"paragraph","text":"We are offering five new Droplet plans. They start from $40/mo for two dedicated vCPUs, up to $640/mo for 32 dedicated vCPUs.","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/53bffc7a15733637f3118b5f99448c1d3d352d7e_high-cpu-pricing-table-1.png?auto=compress,format","alt":"High CPU Pricing Plan Table","copyright":null,"dimensions":{"width":1285,"height":396}},{"type":"paragraph","text":"We've partnered with Intel to back these Droplets with Intel's most powerful processors, delivering a maximum, reliable level of performance. Going forward, we’ll regularly evaluate and use the best CPUs available to ensure they always deliver the best performance for your applications.","spans":[]},{"type":"paragraph","text":"The current CPUs powering High CPU Droplets are the Intel Broadwell 2697Av4 with a clock speed of 2.6Ghz, and the Intel Skylake 8168 with a clock speed of 2.7Ghz. Customers in our early access period have seen up to four times the performance of Standard Droplet CPUs, and on average see about 2.5 times the performance.","spans":[]},{"type":"paragraph","text":"Ben Schaechter","spans":[]},{"type":"paragraph","text":"Product Manager, Droplet","spans":[]}],"blog_post_date":"2017-10-23","tags":[{"tag1":{"tag":"Product Updates","_linkType":"Link.document","_meta":{"uid":"product-updates"}}}],"_meta":{"uid":"introducing-high-cpu-droplets"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"Luca Salvatore","author_image":{"dimensions":{"width":250,"height":250},"alt":"Luca Salvatore","copyright":null,"url":"https://images.prismic.io/www-static/fd8fb2a54e8e54d882c33bccac82b22a684d920e_9bb2be860884302b74920173da25866a.jpg?auto=compress,format"},"_meta":{"uid":"luca_salvatore"}},"blog_header_image":{"dimensions":{"width":784,"height":418},"alt":"DigitalOcean logo illustration","copyright":null,"url":"https://images.prismic.io/www-static/23626aa48384759b9118769a56f86f991bbfd315_whatsnewonthedonetwork_blog_pat.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"What's New With the DigitalOcean Network","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"Early this year the network engineering team at DigitalOcean embarked on a fairly ambitious project. We were thinking about areas of our network that needed improvement both for our customers and for our internal systems. One of the key things that we strive for at DO is to provide our customers with a stable and high performing cloud platform. As we continue to grow and release new products, it becomes clear that network infrastructure is a critical component and it must keep up with our customers needs. In order to allow our customers to grow, the network must be able to scale, it must be performant, and above all, must be reliable.","spans":[]},{"type":"paragraph","text":"With those factors in mind, we went to work building out the DigitalOcean global backbone. It’s not finished yet, but we wanted to share what has been done so far, what is in progress, and what the end state will be.","spans":[]},{"type":"heading2","text":"Creating a Backbone Network","spans":[]},{"type":"paragraph","text":"DigitalOcean currently operates 12 datacenter regions (DCs) all around the world. Up until recently, these datacenters have functioned as independent “island” networks. This means that if you have Droplets in multiple locations and they need to communicate with each other, that communication goes across the public internet. For the most part, that “just works”, but the internet is susceptible to a multitude of potential problems: ISPs can have technical problems, congestion is common, and there are malicious attacks that can cause widespread issues. If you have an application that requires communication between multiple regions, the factors mentioned above could throw a wrench in even the most well designed system. To mitigate this risk, we are building our own backbone network.","spans":[]},{"type":"paragraph","text":"A backbone network allows us to interconnect our DCs using a variety of technologies such as dark fiber and wavelengths. This means that communication between DO locations no longer needs to traverse the public internet. Instead, traffic between locations runs over dedicated links that DigitalOcean manages. This gives our customers predictable and reliable transport between regions. Predictable and reliable are the key words here, and this is immensely important for anyone who is building mission critical applications. It allows developers and engineers to know exactly how their application will perform, and feel safe in the fact that their traffic is running over dedicated and redundant infrastructure.","spans":[]},{"type":"paragraph","text":"Our customers have probably noticed a number of “Network Maintenance Notifications” that we’ve sent out. In order to build out our backbone and ensure that it is scalable, reliable, and performant, we’ve had to make a number of changes to our existing network infrastructure. This includes software upgrades, new hardware, and a number of complex configuration changes. The end result will ensure that our current and future customers will benefit from all of this work.","spans":[]},{"type":"paragraph","text":"Now, onto the details. This is what we have built so far, and what we'll  build in the future.","spans":[]},{"type":"heading2","text":"Networking Through DO-Owned Links","spans":[]},{"type":"paragraph","text":"We’ve interconnected our three NYC locations; All Droplet-to-Droplet traffic between NYC1, NYC2, and NYC3 now traverses DO-owned links. Latency is predictable and stable, and packet loss is nonexistent.","spans":[]},{"type":"paragraph","text":"We’ve done the same thing around all of our European locations: LON1, AMS2, AMS3, and FRA1 are all now interconnected together. Again, all traffic between Droplets within the EU now stays within the DO network. Here is how it looks:","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/9f23c1291d8e12155deb9a29e7dcecd72fdbf5c4_pasted-image-0.png?auto=compress,format","alt":"Active and provisioning EU networks","copyright":null,"dimensions":{"width":1161,"height":817}},{"type":"paragraph","text":"We’ve also provisioned transatlantic links connecting our NYC regions to our European regions. This means that your communication between NYC and any datacenter in Europe also stays within our own network:","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/ff5e1d0a1bb2fbfc15fccc84b2022342863d5c9f_na---eu-fiber.jpg?auto=compress,format","alt":"Transatlantic links","copyright":null,"dimensions":{"width":1570,"height":660}},{"type":"paragraph","text":"Adding more to the mix, we’ve connected our NYC locations to our two facilities in California, SFO1 and SFO2.  All communication around North America as well as communication within and to Europe now stays within the DO backbone:","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/ea41f20b50d226c02409586fee4f62f8187fe39f_na-fiber-1.jpg?auto=compress,format","alt":"North American network","copyright":null,"dimensions":{"width":1427,"height":743}},{"type":"paragraph","text":"Next up will be connectivity from the SFO region to SGP1. We also have plans to link Singapore to Europe which is slated for Q1 2018 as well as TOR1 to NYC. Once fully completed, the DO global backbone will look like this:","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/fce7e20463050252ad6de03b08e808e467dedf6f_do-global-network-1.jpg?auto=compress,format","alt":"DO global network","copyright":null,"dimensions":{"width":1569,"height":792}},{"type":"paragraph","text":"We are very excited about what these upgrades mean for DO and for you, our users. We’re continually striving to create better performing and more reliable infrastructure, and I feel that these upgrades to the network will set the stage for some really awesome things to be built on top of the DO platform.","spans":[]},{"type":"paragraph","text":"Luca Salvatore is currently the manager of the Networking Engineering Team at DigitalOcean. Over the past decade Luca has held various network engineering roles both in Australia and the USA.  He has designed and built large enterprise and datacenter networks and has first hand experience dealing with massively scalable networks such as DigitalOcean.  He has been working in the cloud networking space for the past 5 years and is committed to peering and an open internet for all.","spans":[{"start":0,"end":482,"type":"em"},{"start":445,"end":452,"type":"hyperlink","data":{"link_type":"Web","url":"https://blog.digitalocean.com/connect-the-dots-with-internet-peering-at-ix-points/"}}]}],"blog_post_date":"2017-10-18","tags":[{"tag1":{"tag":"Engineering","_linkType":"Link.document","_meta":{"uid":"engineering"}}}],"_meta":{"uid":"whats-new-with-the-digitalocean-network"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"Matt Layher","author_image":null,"_meta":{"uid":"matt_layher"}},"blog_header_image":{"dimensions":{"width":1200,"height":640},"alt":null,"copyright":null,"url":"https://images.prismic.io/www-static/e29e9451-61cf-4541-9722-ddb1d5c78b6f_DivingIntoTheDepths_blog_pat.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Cthulhu: Organizing Go Code in a Scalable Repo","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"At DigitalOcean, we’ve used a “mono repo” called cthulhu to organize our Go code for nearly three years. A mono repo is a monolithic code repository which contains many different projects and libraries. Bryan Liles first wrote about cthulhu in early 2015, and I authored a follow-up post in late 2015.","spans":[{"start":221,"end":240,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/company/blog/taming-your-go-dependencies/"}},{"start":273,"end":287,"type":"hyperlink","data":{"link_type":"Web","url":"https://blog.gopheracademy.com/advent-2015/go-in-a-monorepo/"}}]},{"type":"paragraph","text":"A lot has changed over the past two years. As our organization has scaled, we have faced a variety of challenges while scaling cthulhu, including troubles with vendoring, CI build times, and code ownership. This post will cover the state of cthulhu as it is today, and dive into some of the benefits and challenges of using a mono repo for all of our Go code at DigitalOcean.","spans":[]},{"type":"heading2","text":"Cthulhu Overview","spans":[]},{"type":"paragraph","text":"Our journey using Go with a mono repo began in late 2014. Since then, the repository, called \"cthulhu\", has grown exponentially in many ways. As of October 6th, 2017, cthulhu has:","spans":[]},{"type":"list-item","text":"28,639 commits","spans":[]},{"type":"list-item","text":"824 branches","spans":[]},{"type":"list-item","text":"142 contributors","spans":[]},{"type":"list-item","text":"830,434 lines of DigitalOcean-authored Go code","spans":[]},{"type":"list-item","text":"2,136,373 lines of vendored Go code","spans":[]},{"type":"paragraph","text":"As the scale of the repository has grown over the past three years, it has introduced some significant tooling and organizational challenges.","spans":[]},{"type":"paragraph","text":"Before we dive into some of these challenges, let’s discuss how cthulhu is structured today (some files and directories have been omitted for brevity):","spans":[]},{"type":"preformatted","text":"```[php]{`","spans":[]},{"type":"paragraph","text":"    cthulhu  ","spans":[]},{"type":"paragraph","text":"    ├── docode","spans":[]},{"type":"paragraph","text":"    │   └── src","spans":[]},{"type":"paragraph","text":"    │       └── do","spans":[]},{"type":"paragraph","text":"    │           ├── doge","spans":[]},{"type":"paragraph","text":"    │           ├── exp","spans":[]},{"type":"paragraph","text":"    │           ├── services","spans":[]},{"type":"paragraph","text":"    │           ├── teams","spans":[]},{"type":"paragraph","text":"    │           ├── tools","spans":[]},{"type":"paragraph","text":"    │           └── vendor","spans":[]},{"type":"paragraph","text":"    └── script","spans":[]},{"type":"paragraph","text":"    `}```","spans":[]},{"type":"paragraph","text":"`docode/` is the root of our `GOPATH`. Readers of our previous posts may notice that `third_party` no longer exists, and `do/` is now the prefix for all internal code.","spans":[]},{"type":"paragraph","text":"## Code Structure","spans":[]},{"type":"paragraph","text":"All Go code lives within our `GOPATH`, which starts at `cthulhu/docode`.  Each directory within the `do/` folder has a unique purpose, although we have deprecated the use of `services/` and `tools/` for the majority of new work.","spans":[]},{"type":"paragraph","text":"`doge/` stands for “DigitalOcean Go Environment”, our internal “standard library”. A fair amount of code has been added and removed from `doge/` over time, but it still remains home to a great deal of code shared across most DigitalOcean services. Some examples include our internal logging, metrics, and gRPC interaction packages.","spans":[]},{"type":"paragraph","text":"`exp/` is used to store experimental code: projects which are in a work-in-progress state and may never reach production. Use of `exp/` has declined over time, but it remains a useful place to check in prototype code which may be useful in the future.","spans":[]},{"type":"paragraph","text":"`services/` was once used as a root for all long-running services at DO. Over time, it became difficult to keep track of ownership of code within this directory, and it was replaced by the `teams/` directory.","spans":[]},{"type":"paragraph","text":"`teams/` stores code owned by specific teams. As an example, a project called “hypervisor” owned by team “compute” would reside in `do/teams/compute/hypervisor`. This is currently the preferred method for organizing new projects, but it has its drawbacks as well. More on this later on.","spans":[]},{"type":"paragraph","text":"`tools/` was once used to store short-lived programs used for various purposes. These days, it is mostly unused except for CI build tooling, internal static analysis tools, etc. The majority of team-specific code that once resided in `tools/` has been moved to `teams/`.","spans":[]},{"type":"paragraph","text":"Finally, `vendor/` is used to store third-party code which is vendored into cthulhu and shared across all projects. We recently added the prefix `do/` to all of our Go code because existing Go vendoring solutions did not work well when `vendor/` lived at the root of the `GOPATH` (as was the case with our old `third_party/` approach).","spans":[]},{"type":"paragraph","text":"`script/` contains shell scripts which assist with our CI build process. These scripts perform tasks such as static analysis, code compilation and testing, and publishing newly built binaries.","spans":[]},{"type":"heading2","text":"CI Build Tooling","spans":[]},{"type":"paragraph","text":"One of the biggest advantages of using a mono repo is being able to effectively make large, cross-cutting changes to the entire repository without fear of breaking any “downstream” repositories. However, as the amount of code within cthulhu has grown, our CI build times have grown exponentially.","spans":[]},{"type":"paragraph","text":"Even though Go code builds rather quickly, in early 2016, CI builds took an average of 20 minutes to complete. This resulted in extremely slow development cycles. If a poorly written test caused a spurious failure elsewhere in the repo, the entire build could fail, causing a great deal of frustration for our developers.","spans":[]},{"type":"paragraph","text":"After experiencing a great deal of pain because of slow and unreliable builds, one of our engineers, Justin Hines, set out to solve the problem once and for all. After a few hours of work, he authored a build tool called `gta`, which stands for “Go Test Auto”. `gta` inspects the git history to determine which files changed between master and a feature branch, and uses this information to determine which packages must be tested for a given build (including packages that import the changed package).","spans":[]},{"type":"paragraph","text":"As an example, suppose a change is committed which modifies a package, `do/teams/example/droplet`. Suppose this package is imported by another package, `do/teams/example/hypervisor`. `gta` is used to inspect the git history and determine that both of these packages must be tested, although only the first package was changed.","spans":[]},{"type":"paragraph","text":"For very large changes, it can occasionally be useful to test the entire repository, regardless of which files have actually changed. Adding “force-test” anywhere in a branch name disables the use of `gta` in CI builds, restoring the old default behavior of “build everything for every change”.","spans":[]},{"type":"paragraph","text":"The introduction of `gta` into our CI build process dramatically reduced the amount of time taken by builds. An average build now takes approximately 2-3 minutes—a dramatic improvement over the 20 minute builds of early 2016. This tool is used almost everywhere in our build pipeline, including static analysis checks, code compilation and testing, and artifact builds and deployment.","spans":[]},{"type":"heading2","text":"Static Analysis Tooling","spans":[]},{"type":"paragraph","text":"Every change committed to cthulhu is run through a bevy of static analysis checks, including tools such as `gofmt`, `go vet`, `golint`, and others. This ensures a high level of quality and consistency between all of our Go code. Some teams have even introduced additional tools such as `staticcheck` for code that resides within their `teams/` folder.","spans":[]},{"type":"paragraph","text":"We have also experimented with the creation of custom linting tools that resolve common problems found in our Go code. One example is a tool called `buildlint` that checks for a blessed set of build tags, ensuring that tags such as `!race` (exclude this file from race detector builds) cannot be used.","spans":[]},{"type":"paragraph","text":"Static analysis tools are incredibly valuable, but it can be tricky to introduce a new tool into the repository.  Before we decided to run `golint` in CI, there were nearly 1,500 errors generated by the tool for the entirety of cthulhu.  It took a concerted effort and several Friday afternoons to fix all of these errors, but it was well worth the effort. Our internal `godoc` instance now provides a vast amount of high quality documentation for every package that resides within cthulhu.","spans":[]},{"type":"heading2","text":"Challenges","spans":[]},{"type":"paragraph","text":"While there are many advantages to the mono repo approach, it can be challenging to maintain as well.","spans":[]},{"type":"paragraph","text":"Though many different teams contribute to the repository, it can be difficult to establish overall ownership of the repository, its tooling, and its build pipelines. In the past, we tried several different approaches, but most were unsuccessful due to the fact that customer-facing project work typically takes priority over internal tooling improvements. However, this has recently changed, and we now have engineers working specifically to improve cthulhu and our build pipelines, alongside regular project work. Time will tell if this approach suits our needs.","spans":[]},{"type":"paragraph","text":"The issue of code vendoring remains unsolved, though we have made efforts to improve the situation. As of now, we use the tool “govendor” to manage our third-party dependencies.  The tool works well on Linux, but many of our engineers who run macOS have reported daunting issues while running the tool locally. In some cases, the tool will run for a very long time before completion. In others, the tool will eventually fail and require deleting and re-importing a dependency to succeed.  In the future, we’d also like to try out “dep”, the “official experiment” vendoring tool for the Go project. At this time, GitHub Enterprise does not support Go vanity imports, which we would need to make use of dep.","spans":[{"start":701,"end":704,"type":"hyperlink","data":{"link_type":"Web","url":"https://github.com/golang/dep/issues/174"}}]},{"type":"paragraph","text":"As with most companies, our organizational structure has also evolved over time. Because we typically work in the `teams/` directory in cthulhu, this presents a problem. As of now, our code structure is somewhat reliant on our organizational structure. Because of this, code in `teams/` can become out of sync with the organizational structure, causing issues with orphaned code, or stale references to teams that no longer exist. We don’t have a concrete solution to this problem yet, but we are considering creating a discoverable “project directory service” of sorts so that our code structure need not be tied to our organizational structure.","spans":[]},{"type":"paragraph","text":"Finally, as mentioned previously, scaling our CI build process has been a challenge over time. One problem in particular is that non-deterministic or “flappy” tests can cause spurious failures in unrelated areas of the repository.  A test typically flaps when it relies on some assumption which cannot be guaranteed, such as timing or ordering of concurrent operations. This problem is compounded when interacting with a service such as MySQL in an integration test. For this reason, we encourage our engineers to do everything in their power to make their tests as deterministic as possible. ","spans":[]},{"type":"heading2","text":"Summary","spans":[]},{"type":"paragraph","text":"We’ve been using cthulhu for three years at DigitalOcean, and while we’ve faced some significant hurdles along the way, the mono repo approach has been a huge benefit to our organization as a whole. Over time, we’d like to continue sharing our knowledge and tools, so that others can reap the benefits of a mono repo just as we have. ","spans":[]},{"type":"paragraph","text":"*Matt Layher is a software engineer on the Network Services team, and a regular contributor to a wide variety of open source networking applications and libraries written in Go. You can find Matt on Twitter and GitHub.*","spans":[{"start":199,"end":206,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/mdlayher"}},{"start":211,"end":217,"type":"hyperlink","data":{"link_type":"Web","url":"https://github.com/mdlayher"}}]}],"blog_post_date":"2017-10-10","tags":[{"tag1":{"tag":"Engineering","_linkType":"Link.document","_meta":{"uid":"engineering"}}}],"_meta":{"uid":"cthulhu-organizing-go-code-in-a-scalable-repo"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"Hollie Haggans","author_image":{"dimensions":{"width":400,"height":400},"alt":"Hollie Haggans","copyright":null,"url":"https://images.prismic.io/www-static/7793109e3fed5f875dc50b8866c8e631bd51d5b5_0bfbced-1.jpg?auto=compress,format"},"_meta":{"uid":"hollie_haggans"}},"blog_header_image":{"dimensions":{"width":1200,"height":640},"alt":"cube with people working illustration","copyright":null,"url":"https://images.prismic.io/www-static/a27e2d6dad5e2086d2e5c1463c1c594142abd439_hatchoneyearanniversary_blog.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Hatch at One Year: Helping More Startups Grow","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"Our global incubator program Hatch turned one year this past September. Since 2016, we’ve partnered with over 170 incubators, venture capital firms, and accelerators globally to provide infrastructure credit and technical support to startups in over 61 countries, and we’ve moved Hatch out of the beta phase to make the program more widely available across the world.","spans":[{"start":4,"end":34,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/hatch/"}},{"start":29,"end":34,"type":"strong"}]},{"type":"paragraph","text":"Hatch startup participants include companies like:","spans":[]},{"type":"list-item","text":"InnerSpace, the world's first indoor GPS platform.","spans":[{"start":0,"end":10,"type":"hyperlink","data":{"link_type":"Web","url":"https://innerspace.io/"}}]},{"type":"list-item","text":"Be My Eyes, an app that connects the blind and visually impaired with helpers from around the world via live-video connection.","spans":[{"start":0,"end":10,"type":"hyperlink","data":{"link_type":"Web","url":"http://bemyeyes.com/"}}]},{"type":"list-item","text":"Netra, a visual insights solution that helps companies understand how consumers engage with their brands on social media.","spans":[{"start":0,"end":5,"type":"hyperlink","data":{"link_type":"Web","url":"http://netra.io/"}}]},{"type":"list-item","text":"Audiosear.ch, a one-stop search and recommendation engine for podcasts.","spans":[{"start":0,"end":12,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.audiosear.ch/"}}]},{"type":"list-item","text":"Qencode, a cloud transcoding solution.","spans":[{"start":0,"end":7,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.qencode.com/"}}]},{"type":"list-item","text":"Sphero, fusing robotic and digital technology into immersive entertainment experiences.","spans":[{"start":0,"end":6,"type":"hyperlink","data":{"link_type":"Web","url":"http://www.sphero.com/"}}]},{"type":"list-item","text":"Stacksware, the premier solution for real-time software inventory and metering for workstations, servers, and VDI.","spans":[{"start":0,"end":10,"type":"hyperlink","data":{"link_type":"Web","url":"https://stacksware.com/"}}]},{"type":"list-item","text":"Astronomer, connecting data from your apps, tools, legacy systems, and more into one streamlined data engineering platform.","spans":[{"start":0,"end":10,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.astronomer.io/"}}]},{"type":"list-item","text":"Lucy, an artificial intelligence assistant that replaces email.","spans":[{"start":0,"end":4,"type":"hyperlink","data":{"link_type":"Web","url":"http://hellolucy.io/"}}]},{"type":"list-item","text":"Zaask, helping people find the right professional for any project.","spans":[{"start":0,"end":5,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.zaask.pt/"}}]},{"type":"list-item","text":"Ahoy, making it easier for busy people to book and manage their flights.","spans":[{"start":0,"end":4,"type":"hyperlink","data":{"link_type":"Web","url":"https://ahoy.io/en/"}}]},{"type":"paragraph","text":"In addition to providing infrastructure support, we’ve hosted forums, called Hatch Founders’ Circles, in New York, Berlin, and Bangalore that facilitate thought partnership between our Hatch startups and other successful tech entrepreneurs, and are launching an invite-only Slack community for our Hatch startup founders.","spans":[{"start":105,"end":113,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.youtube.com/watch?v=r9movD7a-sQ"}},{"start":115,"end":121,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.youtube.com/watch?v=tc2L9fDyyVA"}},{"start":127,"end":136,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.youtube.com/watch?v=EeHUDJP1g4I&amp;list=PLseEp7p6EwiZyumuK5dIziSbNXlAc9L1s"}}]},{"type":"paragraph","text":"To celebrate this milestone, DigitalOcean co-founder Mitch Wainer recently interviewed DO CEO Ben Uretsky for an episode of The Deep End podcast. They discussed DO’s humble beginnings and what’s changed for the company over the past six years.","spans":[{"start":124,"end":144,"type":"hyperlink","data":{"link_type":"Web","url":"https://soundcloud.com/digitaloceanpodcast"}}]},{"type":"paragraph","text":"The following excerpts were edited and adapted from the podcast, which you can listen to in full here:","spans":[]},{"type":"heading2","text":"How DigitalOcean Got Its Start","spans":[]},{"type":"paragraph","text":"Mitch Wainer: So Ben, why don't you just quickly introduce yourself. You’re the CEO of DigitalOcean, but give a little background on your history.","spans":[{"start":0,"end":146,"type":"strong"}]},{"type":"paragraph","text":"Ben Uretsky: I was born in Russia, immigrated here when I was five years old with my family, my brother, my mom and my dad, and one of our grandmas as well. I went to school in New York City, graduated from Pace University. I actually managed to start my first company while attending college, so that was great. I built that business over a number of years, and had the pleasure of starting DigitalOcean in the summer of 2011 with four other co-founders, you being one of them. That was definitely a fun journey. We rented a three-bedroom ranch out in Boulder, Colorado.","spans":[{"start":0,"end":11,"type":"strong"}]},{"type":"paragraph","text":"That was for the Techstars program. What was the most exciting or the most interesting memory that you can share from Techstars? Which memory stands out in your mind?","spans":[{"start":0,"end":166,"type":"strong"}]},{"type":"paragraph","text":"I'd say demo day. A lot of practice and months of preparation went into getting ready…and there were about a thousand people in the audience. I think it was a high pressure situation because it's investors and people from the community; it's not just a general crowd.","spans":[]},{"type":"paragraph","text":"The other event that came to mind the year prior to that, or actually just a few months earlier—the New York Tech Meetup. That was 800 people, but it felt much more supportive because it's the tech community coming out to see a few companies demo and showcase their work, whereas the Techstars demo day, you feel like you're being judged by a thousand people. So that was definitely an intense experience. I remember doing practice sessions with you in the backyard; getting ready for demo day, and you did the Karate Kid on me: “Wax on, wax off.”","spans":[]},{"type":"heading2","text":"Overcoming Challenges","spans":[]},{"type":"paragraph","text":"DigitalOcean has grown, not only on the people side, but also on the tech side. We've gone through a lot of different technology challenges and struggles, so I would love for you to talk about some of those struggles and how we overcame those challenges.","spans":[{"start":0,"end":254,"type":"strong"}]},{"type":"paragraph","text":"Initially, most of the software was actually written by a single person, Jeff Carr, our co-founder. And in those days, the way that we would reference cloud health could be measured in hours. Essentially, how many hours can Jeff stay away from the console before something would break and he would need to get back in there and fix it? The good news is that we applied simplicity to our architecture as well. So we ensured that, no matter what happens, customer Droplets and customer environments wouldn't be affected by most of the outages and most of the service interruptions.","spans":[]},{"type":"paragraph","text":"It allowed us to maintain a really high level of uptime and build the performance and reliability that our customers expect, but at the same time, if you're a single person building the system, a lot of difficulties, [and] challenges come up that you may not have foreseen. [And] the product really scaled. Jeff more or less single-handedly got it to nearly 100,000 customers. What you start building day one looks radically different when you have 100,000 users on the service. I'd say that was one challenge.","spans":[]},{"type":"paragraph","text":"The second is really as we started to grow: building and engineering team morale into the service and getting people familiar [with] the ins and outs of the systems. And what was really exciting is that first team, one of their main driving objectives was to refactor a lot of the code that Jeff wrote. Turning it from a proof-of-concept into a much more stable and reliable environment, with documentation, with a more modular understanding, and so that kind of speaks to the shift that we're still going through today. Moving away from the monolithic app that was originally built into a more distributed, micro-service enabled architecture. We're making good progress, but with a more scalable service environment comes more complexity. We have to invest a lot more engineers into building new features and capabilities. And so there are trade-offs in each of those scenarios.","spans":[]},{"type":"heading2","text":"It All Comes Down to People","spans":[]},{"type":"paragraph","text":"How has the engineering team structure changed throughout the years to support that evolution of our back-end code base and stack?","spans":[{"start":0,"end":130,"type":"strong"}]},{"type":"paragraph","text":"There are a few interesting mutations along the way: Going from one engineer to 30; bringing in our first set of engineering managers. We really promoted from within our first six. And I think what was really inspiring is a few years ago, we sat down and came up with a mission document, and said, \"Okay, if we're gonna scale this to a million customers, and even more revenue, how do we see ourselves getting there?\" And everyone contributed towards what their team's mission and objective was.","spans":[]},{"type":"paragraph","text":"[For a while] it was more or less a few frontend teams and quite a few backend teams, but nonetheless, that structure held for a couple of years. And prior to that, I feel like we were reworking maybe every other quarter. So that stability allowed us to grow the team, from 30 or 40 people to a little bit over a hundred. Just a few months ago, engineering management along with [the] Product [team] had the opportunity to re-envision a different way to organize the teams, and today, we've moved to a much more vertical structure, building a team around each of the products. We [now] have a team for Droplet, a team for our Storage services, and a team for the Network services. And that's full stack from the frontend, the API, all the way to the backend services. We're in a much more verticalized structure today.","spans":[]},{"type":"paragraph","text":"As CEO of the company, what are some of your challenges and what really keeps you up at night?","spans":[{"start":0,"end":94,"type":"strong"}]},{"type":"paragraph","text":"The interesting thing is that the role has changed year by year, and different challenges come up and are top of mind. I would say the two that I feel are most recurrent [are] related to the people. Whether it's employees or even the senior leadership team, and making sure that you have that right, that everyone's engaged, they're motivated, that you're making the right hiring decisions. That's all pretty complex stuff when we only hired 20 people [at first]. Today, DigitalOcean is roughly 350 people. And as a result, the amount of decisions that you have to make multiplies, and also the effects within the company become that much more complicated. That's always an interesting aspect of the work.","spans":[]},{"type":"paragraph","text":"The second challenge that ties very close to that is making sure you paint the right vision for the business, so that people feel like when they come to work, they know what needs to be done. They're in alignment with where the company is headed. And that they're motivated and inspired by what we're trying to build.","spans":[]},{"type":"paragraph","text":"So it all comes down to people?","spans":[{"start":0,"end":31,"type":"strong"}]},{"type":"paragraph","text":"Companies are collections of people first and foremost. They're not the service, they're not the product, it's really people, and once you comprehend that, I think it allows you to take your leadership to the next level.","spans":[]},{"type":"paragraph","text":"Hollie Haggans heads up Global Partnerships for DigitalOcean’s Hatch program. She is passionate about startups and cold brew coffee. Get in touch with questions at hatch@digitalocean.com.","spans":[{"start":0,"end":187,"type":"em"},{"start":164,"end":186,"type":"hyperlink","data":{"link_type":"Web","url":"mailto:hatch@digitalocean.com"}}]}],"blog_post_date":"2017-10-03","tags":[{"tag1":{"tag":"Community","_linkType":"Link.document","_meta":{"uid":"community"}}}],"_meta":{"uid":"hatch-one-year-anniversary"}}},{"node":{"author":{"_linkType":"Link.document","author_name":"DigitalOcean","author_image":{"dimensions":{"width":600,"height":600},"alt":"Sammy avatar","copyright":null,"url":"https://images.prismic.io/www-static/a10e3c2eb15b74ee43f872be3044313423b1c9a9_sammy_avatar.png?auto=compress,format"},"_meta":{"uid":"digitalocean"}},"blog_header_image":{"dimensions":{"width":784,"height":418},"alt":"buildings illustration","copyright":null,"url":"https://images.prismic.io/www-static/9647f2e68851ff5dec70c90be344ba7e62bbf48f_blockstorage_nyc3_lon1_blog--1-.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Block Storage Comes to NYC3 and LON1; One More Data Center on the Way!","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"Today, we're excited to share that Block Storage is available to Droplets in NYC3 and LON1. With Block Storage, you can scale your storage independently of your compute and have more control over how you grow your infrastructure, enabling you to build and scale larger applications more easily. Block Storage has been a key part of our overall focus on strengthening the foundation of our platform to increase performance and enable our customers to scale.","spans":[{"start":35,"end":48,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/products/storage/"}}]},{"type":"paragraph","text":"We've seen incredible engagement since our launch last July. Users have created Block Storage volumes in SFO2, NYC1, FRA1, SGP1, TOR1, and BLR1 to scale databases, take backups, store media, and much more; NYC3 and LON1 are our seventh and eighth datacenters with Block Storage respectively.","spans":[{"start":50,"end":59,"type":"hyperlink","data":{"link_type":"Web","url":"https://blog.digitalocean.com/block-storage-more-space-to-scale/"}},{"start":147,"end":162,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location-on-ubuntu-16-04"}},{"start":178,"end":189,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/how-to-move-the-data-directory-for-owncloud-on-ubuntu-16-04"}},{"start":195,"end":204,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/tutorials/how-to-configure-an-encrypted-zfs-pool-with-digitalocean-block-storage-on-freebsd"}}]},{"type":"paragraph","text":"As we continue to upgrade and augment our other data centers, we'll be ensuring that Block Storage is added too. In order to help you plan your deployments, we've finalized the timeline for AMS3. Here is the schedule we're targeting for Block Storage rollout:","spans":[]},{"type":"list-item","text":"Singapore (SGP1): Now!","spans":[{"start":0,"end":9,"type":"strong"}]},{"type":"list-item","text":"Toronto (TOR1): Now!","spans":[{"start":0,"end":7,"type":"strong"}]},{"type":"list-item","text":"Bangalore (BLR1): Now!","spans":[{"start":0,"end":9,"type":"strong"}]},{"type":"list-item","text":"New York City (NYC3): Now!","spans":[{"start":0,"end":13,"type":"strong"}]},{"type":"list-item","text":"London (LON1): Now!","spans":[{"start":0,"end":6,"type":"strong"}]},{"type":"list-item","text":"Amsterdam (AMS3): Now!","spans":[{"start":0,"end":9,"type":"strong"},{"start":18,"end":22,"type":"hyperlink","data":{"link_type":"Web","url":"https://blog.digitalocean.com/block-storage-in-ams3/"}}]},{"type":"paragraph","text":"Inside LON1, our London datacenter region.","spans":[{"start":0,"end":42,"type":"em"}]},{"type":"image","url":"https://images.prismic.io/www-static/1b7272508d1104d80bc89267201bf449c9102255_digitaloceandatacentrelondon-6601.jpg?auto=compress,format","alt":"Inside LON1, our London datacenter region","copyright":null,"dimensions":{"width":1600,"height":1067}},{"type":"paragraph","text":"Additionally, Kubernetes now offers support for DigitalOcean Block Storage thanks to StackPointCloud. Learn more about it here.","spans":[{"start":122,"end":126,"type":"hyperlink","data":{"link_type":"Web","url":"https://blog.stackpoint.io/stackpointcloud-extends-kubernetes-to-provision-full-set-of-digitalocean-services-49c356c19f6e"}}]},{"type":"paragraph","text":"Thanks to everyone who has given us feedback and used Block Storage so far. Please keep it coming. You can create your first Block Storage volume in NYC3 or LON1 today!","spans":[{"start":149,"end":153,"type":"hyperlink","data":{"link_type":"Web","url":"https://cloud.digitalocean.com/droplets/new?distro=ubuntu&amp;distroImage=ubuntu-16-04-x64&amp;size=2gb&amp;region=nyc3"}},{"start":157,"end":161,"type":"hyperlink","data":{"link_type":"Web","url":"https://cloud.digitalocean.com/droplets/new?distro=ubuntu&amp;distroImage=ubuntu-16-04-x64&amp;size=2gb&amp;region=lon1"}}]},{"type":"paragraph","text":"Please note: For our NYC3 region, we recommend that you add a volume at the time you create your Droplet to ensure access to Block Storage.","spans":[{"start":0,"end":11,"type":"strong"}]},{"type":"paragraph","text":"—DigitalOcean Storage Team","spans":[]}],"blog_post_date":"2017-09-28","tags":[{"tag1":{"tag":"Product Updates","_linkType":"Link.document","_meta":{"uid":"product-updates"}}}],"_meta":{"uid":"block-storage-comes-to-singapore"}}}]}}}