{"componentChunkName":"component---src-templates-author-jsx","path":"/blog/author/digitalocean/8/","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":84,"numAuthorPages":10,"currentPage":8,"uid":"digitalocean","data":[{"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":null,"blog_headline":[{"type":"heading1","text":"Node Summit 2014.","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"DigitalOcean is proud to announce our official sponsorship of this year's annual Node Summit. Since the first Droplet was spun up, we have been dedicated to creating the ideal environment for developers. This is our little way of reinforcing our support for the Javascript community, and showing gratitude for what has been an integral part of our own success story.","spans":[]},{"type":"paragraph","text":"The global and wide scale usage of Node.js in such a brief time span is a testament to its performance and scalability. With a thriving community consisting of some of the world's best developers, it's undeniable the impact this will have on the future of cloud hosting. As stated in a sponsored post produced by Node Summit, it is \"virtually unheard of for the biggest names in the technology world to throw their support behind and put such a heavy reliance on something that has yet to reach version 1.0, but that is exactly what has happened with the adoption of Node.js.\"","spans":[]},{"type":"paragraph","text":"DigitalOcean is actively seeking to sponsor more Javascript events and will be on site to answer any questions, as we continue to grow out our infrastructure to further support Node and Javascript. For some added fun, we will be giving away a free ticket to the event picked at random (just tweet @DigitalOcean I'd love to see you at #DONode), as well as $10,000 in hosting credit to this year's hackathon winner.","spans":[]}],"blog_post_date":"2013-11-26","tags":[{"tag1":{"tag":"Community","_linkType":"Link.document","_meta":{"uid":"community"}}},{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}}],"_meta":{"uid":"node-summit-2014"}}},{"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":null,"blog_headline":[{"type":"heading1","text":"Deploy With Just A Git Push With Dokku, An Open Source PaaS","spans":[]}],"blog_post_content":[{"type":"paragraph","text":" ","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/dae8a27affdc555783e8301fb3222cb996144798_dokku-languages.png?auto=compress,format","alt":"Docker Node Python Rails PHP Ruby","copyright":null,"dimensions":{"width":400,"height":299}},{"type":"paragraph","text":"Today, DigitalOcean adds Dokku to the 1-click image selection on all Droplets. Dokku is an open source Platform as a Service built on Docker and using open source Heroku Build Packs. Spinning it up takes just 55 seconds (as always), and as soon as it's up developers can deploy their apps with just a git push. Out of the box, Dokku supports Ruby, Rails, Node.js, Java, Play!, Python, PHP, Clojure, Go, and Dart. Wanna make sure you're deploying correctly? Our Dokku tutorial section has you covered.","spans":[{"start":25,"end":30,"type":"strong"},{"start":25,"end":30,"type":"hyperlink","data":{"link_type":"Web","url":"https://github.com/progrium/dokku"}},{"start":348,"end":353,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/articles/how-to-use-the-dokku-one-click-digitalocean-image-to-run-a-ruby-on-rails-app"}},{"start":355,"end":362,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/articles/how-to-use-the-dokku-one-click-digitalocean-image-to-run-a-node-js-app"}},{"start":370,"end":375,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/articles/how-to-use-the-dokku-one-click-digitalocean-image-to-run-a-play-app"}},{"start":377,"end":383,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/articles/how-to-use-the-dokku-one-click-digitalocean-image-to-deploy-a-python-flask-app"}},{"start":461,"end":483,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/community_tags/dokku"}}]},{"type":"paragraph","text":"Besides Dokku's ability to easily push apps into production, it is fully customizable with a variety of plugins that can be incorporated into the image. Dokku is a free platform and the cost is only measured by the price of the DigitalOcean hosting plan. Once your app is live, push the server to the limit!","spans":[{"start":104,"end":111,"type":"hyperlink","data":{"link_type":"Web","url":"https://github.com/progrium/dokku/wiki/Plugins"}}]}],"blog_post_date":"2013-11-25","tags":[{"tag1":{"tag":"Product Updates","_linkType":"Link.document","_meta":{"uid":"product-updates"}}},{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}}],"_meta":{"uid":"deploy-with-just-a-git-push-with-dokku-an-open-source-paas"}}},{"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":null,"blog_headline":[{"type":"heading1","text":"NY1 (Equinix) Power Issue Postmortem","spans":[]}],"blog_post_content":[{"type":"heading3","text":"Initial Power Issue","spans":[]},{"type":"paragraph","text":"Last night at approximately 8:43PM EST we received notification from our various monitoring systems that a large number of servers were down in our NY1 region. We immediately began to troubleshoot the situation and confirmed that network connectivity was unavailable. We immediately began to access equipment and found that most of it was online about a minute later. However after reviewing the logs, we saw that the uptime for each device accessed was now in the minutes instead of days, indicating that it had been rebooted.","spans":[]},{"type":"paragraph","text":"We then immediately contacted the Equinix datacenter to get more information. We suspected that there was a power failure and needed to confirm if it was related to our equipment or something larger. On the phone we received confirmation that there was a large power failure at the facility.","spans":[]},{"type":"heading3","text":"Immediate Response","spans":[]},{"type":"paragraph","text":"All of our staff was at high alert at this point, as we had to review each piece of hardware that had been rebooted and we dispatched people to the datacenter as well. Lev, our Director of Datacenter Operations, is currently in Amsterdam opening up our latest facility so instead Anthony and Moisey were on site within the hour.","spans":[]},{"type":"heading3","text":"Initial Contact from Equinix","spans":[]},{"type":"paragraph","text":"An hour later we received official confirmation from Equinix via email that there was in fact a power failure incident at the facility.","spans":[]},{"type":"preformatted","text":"INCIDENT SUMMARY: UPS 7 Failure\n\nINCIDENT DESCRIPTION:\n\nEquinix IBX Site Engineer reports that UPS 7 failed causing disruptions to customer equipment. UPS 7 is back online. Engineers are currently investigating the issue.\n\nNext update will be when a significant change to the situation occurs.\n","spans":[]},{"type":"paragraph","text":"Information was limited coming from Equinix directly; however, with our engineers onsite, we also had a chance to discuss the power issue with other customers of the datacenter and gathered more information.","spans":[]},{"type":"paragraph","text":"Informally what we suspect is that UPS7 was responsible for cleaning the dirty power that comes in from the public grid into stable power which then is distributed throughout the DC. There was in fact a hardware failure of UPS7, which should have triggered an automatic switch to a redundant UPS–which they do have on site– but that switched failed to occur. It is very likely that there is more than one UPS that handles in-bound power, as only about half of the datacenter experienced a failure.","spans":[]},{"type":"paragraph","text":"When the redundancy failed and another UPS did not take over, it essentially meant that power was cut off to equipment. UPS7 then hard rebooted and was back online, which then resumed the flow of power to equipment; however, there was an interruption of several minutes in between.","spans":[]},{"type":"paragraph","text":"While we were on site, we did see power engineers arrive at the facility about 3-4 hours later to investigate what caused the initial failure of UPS7 and why the redundant power switching systems did not operate as they were supposed to.","spans":[]},{"type":"heading3","text":"Power Restored - Restoring the Cloud in NY1","spans":[]},{"type":"paragraph","text":"Losing power to hypervisors is the worst case scenario because an immediate interruption in power doesn't allow the disk drives to clear any caches they have, thus increasing the likelihood that there may be filesystem corruption. We began to troubleshoot every single hypervisor to ensure that it booted up successfully and we did find several systems that needed manual intervention.","spans":[]},{"type":"paragraph","text":"We did not need to recover or rebuild any RAIDs during the process. Instead, some systems failed to boot citing that they failed to find a RAID config, but we suspected that was related to the way they lost power. We powered off those systems and removed the power cords to ensure that everything would reset correctly, and then reseated the physical SSD drives and powered the systems back on.","spans":[]},{"type":"paragraph","text":"Given that the network was also affected, we had to ensure that all of the top of rack switches would converge back onto the network successfully. Here we observed three switches that needed manual intervention to get them back on both cores. One of the switches also had one of the 10-gigE gbics fail which we replaced with a spare. After that was completed, the network layer was back in full operation.","spans":[]},{"type":"paragraph","text":"Once we completed getting all of the physical hypervisors back online, we then proceeded with powering on all of the virtual machines that resided on those systems. We wanted to approach this in a systematic way to ensure that we could give 100% focus to each step of this process. After the virtual machines were back online, we began notifying any customers that opened any tickets that the majority of the work was now complete and to please notify us if they saw any issues.","spans":[]},{"type":"heading3","text":"Please Contact Us","spans":[]},{"type":"paragraph","text":"With all of the hypervisors back online, networking issues resolved, and all virtual machines booted, we instructed customers that were having any issues to please open a ticket so that we could troubleshoot with them. We did see a small percentage of virtual machines having dirty file systems which required an fsck to get them online and working, and we ask customers to reach out to us so we can help with that process if any customer is not familiar with fsck.","spans":[]}],"blog_post_date":"2013-11-24","tags":[{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}}],"_meta":{"uid":"ny1-equinix-power-issue-postmortem"}}},{"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":null,"blog_headline":[{"type":"heading1","text":"Host Your Git Repositories In 55 Seconds With GitLab","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/06de1d2f-4078-4ed5-abe0-3db8f09e8b0d_gitlab-logo.png?auto=compress,format","alt":null,"copyright":null,"dimensions":{"width":256,"height":266}},{"type":"paragraph","text":"DigitalOcean customers can now spin up a Droplet to host their personal git repositories in under a minute with the 1-click Gitlab image. GitLab is an open source project built on Ruby on Rails that allows users to push and store code on their own servers, making their repositories private — accessible only by contributors rather than available to the public. DigitalOcean worked with Sytse Sijbrandij (@sytses) the cofounder of GitLab,  to create the GitLab image.","spans":[{"start":138,"end":144,"type":"hyperlink","data":{"link_type":"Web","url":"http://www.gitlab.com/"}},{"start":405,"end":412,"type":"hyperlink","data":{"link_type":"Web","url":"https://twitter.com/sytses"}}]},{"type":"paragraph","text":"You can try out the DigitalOcean 1-click GitLab image by choosing that option from the Applications tab on the droplet create page. Once the server has been deployed, our Community's GitLab Tutorial will cover the remaining steps needed to get your own git management application online.","spans":[{"start":183,"end":198,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/articles/how-to-use-the-gitlab-one-click-install-image-to-manage-git-repositories"}}]},{"type":"paragraph","text":"Use promo code GIT10 for two months free on DigitalOcean","spans":[{"start":15,"end":20,"type":"strong"},{"start":44,"end":56,"type":"hyperlink","data":{"link_type":"Web","url":"https://cloud.digitalocean.com/registrations/new"}}]}],"blog_post_date":"2013-11-17","tags":[{"tag1":{"tag":"Product Updates","_linkType":"Link.document","_meta":{"uid":"product-updates"}}},{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}}],"_meta":{"uid":"host-your-git-repositories-in-55-seconds-with-gitlab"}}},{"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":null,"blog_headline":[{"type":"heading1","text":"NY2 Network Upgrade Postmortem","spans":[]}],"blog_post_content":[{"type":"heading3","text":"Planned Network Upgrade","spans":[]},{"type":"paragraph","text":"On Monday night, October 21st, we performed a network maintenance to replace our existing core routing infrastructure with new hardware from Juniper. We were replacing the edge routers which bring in connectivity from our providers at the datacenter, as well as the routing cores that sit behind them and handle routing for the entire region.","spans":[]},{"type":"paragraph","text":"Prior to the maintenance, our networking team worked with TorreyPoint Consulting, Carousel, and Juniper. Together we spec'd out the necessary hardware, reviewed the physical network topology, and worked on the configurations for the gear.","spans":[]},{"type":"heading3","text":"October 21st - Redundant Protocol Issue","spans":[]},{"type":"paragraph","text":"Given that the existing network was in a redundant configuration, moving the providers to the new border routers went smoothly. After configuring the top of rack switches onto the new gear, we discovered that there was a brief interruption as the configuration changes went through. This occurred right around midnight EDT.","spans":[]},{"type":"paragraph","text":"The cores were setup with MC-Lag for their redundancy. This is protocol commonly used in large cloud environments and removes the need for spanning-tree in redundant networks. We began to observe that there were some network inconsistencies as changes to the top of rack switches were being made.","spans":[]},{"type":"paragraph","text":"Working with JTAC and escalating through to ATAC, which is Juniper's technical support channel, we were able to trace the issue to our Cisco switches which were lacking port-fast that was causing an issue with network re-convergence. Therefore when changes were being made, they were not propagating as rapidly as they should. This is a spanning-tree setting that was left on the Cisco hardware to double up on top of MC-Lag.","spans":[]},{"type":"paragraph","text":"These protocols are necessary in a redundant setup because with redundancy the way the network topology is laid out naturally creates loops. These physical loops are what allows the traffic to take different paths if a piece of networking gear fails. The issue is that without spanning-tree or other protocols that help devices understand where to send traffic, the traffic would end up in a loop which would effectively take down anything that relies on that path.","spans":[]},{"type":"heading3","text":"October 25th - Removal of Second Core","spans":[]},{"type":"paragraph","text":"At this point we had resolved the issue that was causing networking changes to not propagate quickly, and we were operating off of the new hardware. On October 25th we observed a network interruption whereby the two core routers began flapping and their redundant protocol was not allowing either one to take over as the active device and push traffic out to our providers. Eventually, the routers did reconverge after several minutes of being unable to forward traffic.","spans":[]},{"type":"paragraph","text":"We opened a case with JTAC to review the configurations, as well as to collect further information. As part of our normal and routine work about an hour later, our datacenter operations director brought up additional racks inside the region by plugging in the top of rack switches. At this point we observed another network issue, where again the core routers started to fail and flap. We immediately escalated the issue to JTAC and we had previously scheduled on-site engineers from Juniper which arrived at our office.","spans":[]},{"type":"paragraph","text":"At this point we rolled out MTU changes as recommended by JTAC to match the configurations of the Juniper and Cisco gear, and we also removed the spanning-tree protocol that was still existent on the Cisco top of rack switches. With further review from Juniper, we were in agreement that the current configuration should be working however we were still observing networking issues as the cores failed to reconverge the network appropriately. At that point we felt confident that the issue was related to MC-Lag running between the cores as the configuration downstream to the top of rack switches was correct, so we removed the redundant core and the network then reconverged.","spans":[]},{"type":"paragraph","text":"Once again the case was escalated to Juniper and we suspected possibly faulty hardware. We also had Juniper's Professional Group build out a test-lab of our existing setup running our configurations. This allowed them to test things in a lab to see if they could find any other inconsistencies and observe the behavior that we were seeing on our production network.","spans":[]},{"type":"paragraph","text":"We wanted to rule out the possibility of receiving a failed core from Juniper and escalated the issue further. For this Juniper provides a separate OS that runs a series of self-diagnostics that would look for any possible hardware issues. Unfortunately, this process is quite lengthy and we had to escalate this up the chain of management. Just to receive the answer as to why this diagnostic could not be performed immediately (or at least within hours) required escalating that question through Juniper. Ultimately the answer that we were given on a phone call was that we were not in front of the gear to install the OS, even though our datacenter operations director has basically been sleeping in the datacenter since this network upgrade began.","spans":[]},{"type":"paragraph","text":"From this point forward, we were running from a single core. While this configuration is not redundant it is an optimal state because we spec'd out the hardware to support the load of the network in an active/passive state. Meaning that each core, alone, is fully capable of handling all of the networking load.","spans":[]},{"type":"heading3","text":"Planning for Configuration and Network Review","spans":[]},{"type":"paragraph","text":"We escalated the issue through Juniper again and had one of their regional SVPs stop by our office in NY where we discussed the issues that we ran into. Specifically, the failure of Juniper to provide necessary support as our original escalation to Juniper on October 25th kept us on hold for 2 hours before a tech was available. They also recommended TorreyPoint as the networking consultants, which would provide oversight of our configuration and network topology as obviously we are making changes on a production network supporting tens of thousands of customers, so having additional people provide peer review was essential.","spans":[]},{"type":"paragraph","text":"We scheduled an in-office meeting for Wednesday, October 30th, to review all of the configurations, logs, and network topology in depth so that we could bring the second core back into the configuration.","spans":[]},{"type":"heading3","text":"October 28th - jflow & BGP Configuration Issue","spans":[]},{"type":"paragraph","text":"As our customers may know, DDoS attacks are now a common issue on all networks affecting companies large and small. To identify DDoS attacks, both inbound and outbound, we employ flow analysis. With Juniper gear this is done through jflow which sends packets for analysis to a sensor for automated action. This configuration was added over the previous weekend without an issue.","spans":[]},{"type":"paragraph","text":"On October 28th we ran into an issue with nLayer, which is one of our providers where they were experiencing poor routing. Our usual approach to this is to remove them from the networking mix and update BGP until the provider has a chance to resolve the issue.","spans":[]},{"type":"paragraph","text":"Performing this rather minor BGP update created an issue on the border router where it stopped forwarding traffic. This should not have occurred. Once again escalating the issue, we were able to determine that the cause of this failure was related to jflow and specifically that were sending packets, 1 to 1, for analysis. Meaning that every packet was being mirrored and forwarded to the sensor servers.","spans":[]},{"type":"paragraph","text":"Juniper's recommendation was to either decrease the sample rate so that 1 out of 1000 packets would be analyzed or install a line card (MS-DPC) that handles just mirroring traffic for analysis and offloading that service from the device itself. The alternative solution was to move the jflow process to the core routers instead of the edge/border routers because they have much larger hardware capacity.","spans":[]},{"type":"heading3","text":"October 29th - Current State Update","spans":[]},{"type":"paragraph","text":"This takes us to today and the present state of the network. We have disabled jflow temporarily and will be using internal monitoring for DDoS detection and prevention, leading to a longer response period than normal during a DDoS attack that occurred at approximately 4AM EDT. We have a meeting scheduled on-site with Juniper engineers to go through the entire network topology and all configurations. And we are conducting the diagnostics on the Juniper gear to rule out the possibility of faulty hardware.","spans":[]},{"type":"heading3","text":"October 30th - Onsite Meeting Juniper & TorreyPoint Engineers","spans":[]},{"type":"paragraph","text":"We are meeting tomorrow on-site at our offices with engineers from both Juniper and TorreyPoint to review the entire networking stack. This means a review of the physical gear to ensure that no faulty equipment was shipped, a review of the network topology,  and also a full peer review of all of the configurations from the border/edge routers, to the cores, to the top of rack switches.","spans":[]},{"type":"heading3","text":"October 31st - Planned Maintenance","spans":[]},{"type":"paragraph","text":"We are scheduling a network maintenance for Thursday night which will give us an additional 24 hours after our meeting tomorrow to once again go through the entire network topology and review all of the proposed changes. The goal of that maintenance will be to re-enable the redundant core router back into the network into the originally intended redundant setup.","spans":[]},{"type":"heading3","text":"What We've Learned","spans":[]},{"type":"paragraph","text":"First, we will no longer perform network upgrades on the core setup inside of any region. Instead we will move to a pod architecture which allows us to spec out hardware that will run the networking for \"x\" number of racks. As we build out those racks, we will bring up a second pod which will service the next \"x\" racks. Then we will layer a separate network on top of that, which will allow those racks to communicate with each other.","spans":[]},{"type":"paragraph","text":"This means that we will not need to do an upgrade of an existing deployment, but instead add additional deployments as we increase capacity.","spans":[]},{"type":"paragraph","text":"In the past, every new region that we brought up was configured, tested, and then turned on for production. As a result, we did not run into any issues. This is why up to this point NY2 was very stable as all of the networking gear was installed and tested well before the region was opened for public consumption. The same will be true going forward in our new pod layout.","spans":[]},{"type":"paragraph","text":"Secondly, we will be improving our communications with our customers and the public. We certainly failed in this regard as we were providing updates to customers that opened tickets and also creating updates on our status page (https://www.digitaloceanstatus.com). However, a postmortem and general update like this one is what was required.","spans":[{"start":228,"end":262,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitaloceanstatus.com"}}]},{"type":"paragraph","text":"We thought at each step that the issue was resolved and we would be able to provide a single large update. We continued to run into issues which delayed this blog post, which in reality only caused more frustration to our customers. Without up to date information on what was being done to get stability and reliability back into the network, it is not surprising that our customers were left frustrated.","spans":[]},{"type":"paragraph","text":"With that in mind, we will certainly improve our communication moving forward.","spans":[]}],"blog_post_date":"2013-10-28","tags":[{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}}],"_meta":{"uid":"ny2-network-upgrade-postmortem"}}},{"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":null,"blog_headline":[{"type":"heading1","text":"Try Ghost. A Simple Blogging Platform. For Free!","spans":[]}],"blog_post_content":[{"type":"paragraph","text":" ","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/9953f16d7008d4ed5bb98beb3e2a471cd145646c_ghost-pumpkin.png?auto=compress,format","alt":null,"copyright":null,"dimensions":{"width":251,"height":243}},{"type":"paragraph","text":"With Halloween right around the corner, it is fitting that we formally announce our 1-click install Ghost application feature that will create a Ghost blog in 55 seconds! The wonderful team at Ghost were generous enough to create and share the application image for all DigitalOcean customers. We are so excited about this blogging platform that we want to give away two months of free hosting on a 512MB Droplet plan to new customers! To redeem this offer and to try Ghost for free on DigitalOcean, enter the following promo code when you signup: SSDGHOST10 (expires on November 1st, the day after Halloween)","spans":[{"start":84,"end":125,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/articles/how-to-use-the-digitalocean-Ghost-application"}},{"start":367,"end":435,"type":"strong"},{"start":548,"end":558,"type":"strong"}]},{"type":"paragraph","text":"A little background story... Ghost is a beautifully designed and customizable blogging platform, that went through an awesome journey from a Kickstarter project that received over $100K within 48 hours of their announcement to a full fledged interface, garnering huge enthusiasm since its public launch this week. Ghost focuses on providing users with an easy and elegant way to write and publish their content online. We are very excited to partner with Ghost as they bring their open source blogging platform to the internet.","spans":[{"start":29,"end":34,"type":"hyperlink","data":{"link_type":"Web","url":"http://ghost.org/"}},{"start":141,"end":160,"type":"hyperlink","data":{"link_type":"Web","url":"http://www.kickstarter.com/projects/johnonolan/ghost-just-a-blogging-platform"}}]},{"type":"paragraph","text":"You can find further details on how to easily install and setup Ghost on DigitalOcean by clicking here.","spans":[{"start":89,"end":102,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/community/articles/how-to-use-the-digitalocean-Ghost-application"}}]}],"blog_post_date":"2013-10-15","tags":[{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}},{"tag1":{"tag":"Community","_linkType":"Link.document","_meta":{"uid":"community"}}}],"_meta":{"uid":"try-ghost-a-simple-blogging-platform-for-free"}}},{"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":796,"height":471},"alt":"Private Networking","copyright":null,"url":"https://images.prismic.io/www-static/318cb0a1-f397-4fd6-bf90-e16454d0b93a_privatenworkingimage.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Introducing Private Networking","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"Update: As of July 2018, DigitalOcean Private Networks are now isolated within the account or team where they were created. See all the details here.","spans":[{"start":0,"end":7,"type":"strong"},{"start":128,"end":148,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/docs/release-notes/2018/private-networking/"}}]},{"type":"paragraph","text":"You've requested it, and now it's here! We are happy to announce that all Droplets in NYC2 are now equipped with Shared Private Networking, allowing them to communicate with other Droplets in that same datacenter. Each new Droplet spun up in NYC2 can include a second interface on a network with no public internet access that is accessible from other Droplets with the private networking interface enabled. You can enable shared private networking on your Droplet on the Droplet create screen.","spans":[{"start":113,"end":138,"type":"strong"}]},{"type":"paragraph","text":"Traffic sent between Droplets across the private network will not count towards the bandwidth costs and can be used for database replication, file storage, and similar host to host communication. As with our regular bandwidth and server stats, we are working on graphs to chart private networking usage.","spans":[]},{"type":"paragraph","text":"Check out our full length tutorial on how to get your Droplets up and running with Shared Private Networking.","spans":[{"start":0,"end":34,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/docs/networking/private-networking/quickstart/"}},{"start":0,"end":34,"type":"strong"}]}],"blog_post_date":"2013-09-10","tags":[{"tag1":{"tag":"Product Updates","_linkType":"Link.document","_meta":{"uid":"product-updates"}}},{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}}],"_meta":{"uid":"introducing-private-networking"}}},{"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":null,"blog_headline":[{"type":"heading1","text":"Introducing The DigitalOcean Bug Bounty Program","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"Please see our security page for current information regarding the DigitalOcean security program. The following blog post was correct as of it's posting, details may have changed since it's posting.","spans":[{"start":0,"end":97,"type":"strong"},{"start":15,"end":28,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/security"}}]},{"type":"paragraph","text":"DigitalOcean has been rewarding customers for reporting bugs and we have finally created an official program for this initiative. As part of our effort to improve user experience at DigitalOcean, we would like to invite you to participate in our Bug Bounty Program. While every piece of code that is moved into production is thoroughly tested, it is not always possible to anticipate every scenario that may cause issues in the real world.  This is where we'd appreciate your help!","spans":[{"start":246,"end":264,"type":"strong"}]},{"type":"paragraph","text":"If you find a bug anywhere on our site or servers, please let us know by sending an email to security@digitalocean.com.  The more information you can provide the better.  Our support and engineering teams will review the material and assess the impact. As a thank you for catching and letting us know about the bug, we'll go ahead and reward you. We will also mention you on our security page.","spans":[{"start":93,"end":118,"type":"strong"},{"start":93,"end":118,"type":"hyperlink","data":{"link_type":"Web","url":"mailto:security@digitalocean.com"}},{"start":379,"end":392,"type":"strong"},{"start":379,"end":392,"type":"hyperlink","data":{"link_type":"Web","url":"https://www.digitalocean.com/security"}}]},{"type":"paragraph","text":"Our users are an extraordinary pool of resourceful and capable individuals and together we can continue to improve DigitalOcean for everyone.","spans":[]},{"type":"paragraph","text":"Good luck and happy bug hunting!","spans":[]}],"blog_post_date":"2013-09-08","tags":[{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}}],"_meta":{"uid":"introducing-the-digitalocean-bug-bounty-program"}}},{"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":645,"height":644},"alt":"Graphs","copyright":null,"url":"https://images.prismic.io/www-static/2157750a3cfcaae663c39134cf3cff49e7a58df4_graphs5.png?auto=compress,format"},"blog_headline":[{"type":"heading1","text":"Announcing DigitalOcean Graphs!","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"We are now offering users an inside view of their droplets by displaying the CPU usage, Disk I/O, and network transfer of each server within the control panel.","spans":[]},{"type":"paragraph","text":"This was one of the most up-voted features on our uservoice page, with over 1,200 votes, and we are happy to have fulfilled that user request!","spans":[{"start":50,"end":64,"type":"hyperlink","data":{"link_type":"Web","url":"https://digitalocean.uservoice.com/forums/136585-digital-ocean/suggestions/3296966-show-resources-being-using-like-cpu-ram-disk-an"}}]},{"type":"paragraph","text":"The statistics display in realtime, but users have the option of viewing it over the course of 1 day (in 5 minute intervals), 1 week (half hour intervals), 1 month (2 hour intervals), or 1 year (day long intervals). Mousing over the graph provides the exact numbers associated with that moment.","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/8e4c49c899bd4dd4d92952f338eeea014092c8b1_graphs2.png?auto=compress,format","alt":null,"copyright":null,"dimensions":{"width":797,"height":195}},{"type":"paragraph","text":"The stats are visible within the graphs section of the control panel and were written in d3.js. Because they are taken at the hypervisor level, users do not need to install any additional plugins to get to their droplets to display the information.","spans":[]}],"blog_post_date":"2013-08-05","tags":[{"tag1":{"tag":"Product Updates","_linkType":"Link.document","_meta":{"uid":"product-updates"}}},{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}}],"_meta":{"uid":"announcing-digitalocean-graphs"}}},{"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":null,"blog_headline":[{"type":"heading1","text":"Droplets in NYC's Google Building","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"We are happy to announce the opening of our newest datacenter in New York City. The Telx data center facility located at 111 8th Avenue (NY2) is not only the third largest building in New York City, but is also New York's Google building. \"Googleplex East\" is among the world's most wired buildings and one of the two key Internet intersections in Manhattan. In addition to significantly increasing East Coast capacity, this new datacenter brings DigitalOcean even closer to rolling out private networking for our customers, which will premiere in NY2!","spans":[{"start":84,"end":88,"type":"hyperlink","data":{"link_type":"Web","url":"http://www.telx.com"}},{"start":121,"end":141,"type":"strong"}]},{"type":"paragraph","text":"NY2 Droplets are available and ready to be deployed! To learn more about the 111 8th Avenue facility, watch the video below.","spans":[{"start":0,"end":52,"type":"strong"}]},{"type":"paragraph","text":"Due to our tremendous growth, we are investing heavily in our infrastructure and are continuing to add more capacity and new data centers throughout the world. Additionally, we have added a significant amount of server capacity in Europe (Amsterdam, NL). $5 per month, AMS1 512MB droplets, are, once again, available for deployment for all customers.","spans":[{"start":255,"end":350,"type":"strong"}]},{"type":"paragraph","text":"Keep checking back for data center updates and new locations :)","spans":[]}],"blog_post_date":"2013-07-29","tags":[{"tag1":{"tag":"News","_linkType":"Link.document","_meta":{"uid":"news"}}}],"_meta":{"uid":"droplets-in-nyc-s-google-building"}}},{"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":null,"blog_headline":[{"type":"heading1","text":"Avoid Duplicate SSH Host Keys","spans":[]}],"blog_post_content":[{"type":"paragraph","text":"The ssh daemon uses host keys to uniquely identify itself to connecting clients.  The host keys are typically stored in /etc/ssh. Security best practices dictate that these host keys be unique for each operating system instance.  DigitalOcean typically removes host keys when creating a new Droplet from a snapshot or a standard image.","spans":[]},{"type":"paragraph","text":"The SSH host keys for some Ubuntu-based systems could have been duplicated by DigitalOcean's snapshot and creation process.  Therefore, our system is now configured to remove the host keys on Droplets that are created from snapshots at the time of the first boot.  This removal process only happens in situations where we have a high degree of confidence that the host-keys will be regenerated on boot.","spans":[]},{"type":"paragraph","text":"Most Linux distributions will generate new host keys at boot time if host keys are not found.  However, some images may not do this due to local customization. This can be resolved in the majority of cases simply by logging in to the virtual terminal on the Droplet control panel, adding the following line to /etc/rc.local:","spans":[]},{"type":"preformatted","text":"test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server\n","spans":[]},{"type":"paragraph","text":"and rebooting the affected Droplet.","spans":[]},{"type":"paragraph","text":"DigitalOcean also recommends that users of existing Ubuntu-based Droplets and snapshots regenerate their SSH host keys. To do this, ensure that the above test or an equivalent is in place, remove the host keys, and generate new ones following the procedure below.","spans":[]},{"type":"paragraph","text":"Step 1: remove potentially duplicated host key.","spans":[]},{"type":"preformatted","text":"rm /etc/ssh/ssh_host_*\n","spans":[]},{"type":"paragraph","text":"Step 2: regenerate host keys.","spans":[]},{"type":"preformatted","text":"/usr/sbin/dpkg-reconfigure openssh-server\n","spans":[]},{"type":"paragraph","text":"For snapshots, please create a Droplet from the snapshot, apply the above changes, and create a new snapshot from that Droplet.  Then, after making sure your snapshot is functional by spinning up a new Droplet, you can delete the old snapshot and the new Droplet.","spans":[]},{"type":"paragraph","text":"UPDATE: Sometimes using the dpkg-reconfigure script throws an error instead of generating new keys. Should this happen to you, please run the following commands to manually generate keys:","spans":[]},{"type":"preformatted","text":"ssh-keygen -t dsa -N \"\" -f /etc/ssh/ssh*host*dsa*key\nssh-keygen -t rsa -N \"\" -f /etc/ssh/ssh*host*rsa*key\nssh-keygen -t ecdsa -N \"\" -f /etc/ssh/ssh*host*ecdsa_key\n","spans":[]}],"blog_post_date":"2013-07-25","tags":[{"tag1":{"tag":"Engineering","_linkType":"Link.document","_meta":{"uid":"engineering"}}}],"_meta":{"uid":"avoid-duplicate-ssh-host-keys"}}},{"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":null,"blog_headline":[{"type":"heading1","text":"Launch the 300K Droplet and Win $3,000 in DigitalOcean Credits!!","spans":[]}],"blog_post_content":[{"type":"paragraph","text":" ","spans":[]},{"type":"image","url":"https://images.prismic.io/www-static/a2b15ebc32aa1c9d06fe578119d7cf0f814b10d4_300k-droplet-contest.png?auto=compress,format","alt":null,"copyright":null,"dimensions":{"width":275,"height":399}},{"type":"paragraph","text":"We are growing so quickly! When we first put the cloud server counter on the front page, we celebrated reaching 10,000 Droplets. Now we almost can't believe that we are rounding out to 300,000!","spans":[{"start":7,"end":14,"type":"strong"},{"start":7,"end":14,"type":"hyperlink","data":{"link_type":"Web","url":"http://techcrunch.com/2013/06/27/digitalocean-wants-to-challenge-amazon-linode-and-co-with-better-prices-marketing-and-focus-on-simplicity/"}},{"start":18,"end":25,"type":"strong"},{"start":18,"end":25,"type":"hyperlink","data":{"link_type":"Web","url":"http://news.netcraft.com/archives/2013/06/13/the-meteoric-rise-of-digitalocean.html"}}]},{"type":"paragraph","text":"Our customers have made this possible, and we want to give back. As a big thank you, we are giving away $3,000 in free hosting to the user that spins up the 300,000th Droplet.","spans":[]},{"type":"paragraph","text":"You ask.... How much is $3,000 in hosting credits on DigitalOcean? That much credit will allow you to host a 512MB Droplet for 50 years at zero cost.","spans":[]}],"blog_post_date":"2013-06-25","tags":[{"tag1":{"tag":"Community","_linkType":"Link.document","_meta":{"uid":"community"}}}],"_meta":{"uid":"launch-the-300k-droplet-and-win-3-000-in-digitalocean-credits"}}}]}}}