Deploying a Website - A Project Manager's Guide
Maria Taborda, Senior Product Manager, and
Nevin Morgan, Senior DevOps Engineer
Consider this article your deployment dictionary. You’ll have clarity on key definitions, know the essential deployment steps, and have some go-to tips and questions to ask to ensure your launch day goes smoothly.
As a digital project manager, it's your responsibility to oversee the entire process of delivering digital products from design to production, which also includes the deployment of websites. However, the process of deploying a website can be complex, especially if you're not familiar with the technical aspects.
It can be easy to feel unsure about where to start, especially when it comes to identifying the specific tasks that need to be completed, their sequencing, and who’s responsible for each task. Then, you also have to consider the differences and similarities between third-party providers for website hosting, domain registration, DNS management, and code repository hosting like AWS, GoDaddy, NameCheap, and Github
Removing some of the mystery and complexity around website deployments makes life so much easier for PMs and clients. Consider this article your deployment dictionary. You’ll have clarity on key definitions, know the essential deployment steps, and have some go-to tips and questions to ask to ensure your launch day goes smoothly.
We’ll explore various DevOps terms and provide their definitions through links to the glossary. If you’re new to DevOps, we recommend starting with the glossary section first for a better understanding of the concepts we will be discussing.
While there are different preferences and paths to launching a website, at Viget we’ve developed a process that’s allowed us to successfully launch websites for organizations like the National Park Foundation and the University of Chicago.
It’s important to understand at the beginning of the project where the code will live during the development process, and what will happen when the project is complete. This means deciding who will manage the hosting of the website.
We recommend planning for this in advance by organizing a meeting with all stakeholders, including the client, tech lead, DevOps team (which may be the same as the Dev team), support team (if the website will be transitioned to a different vendor or department after launch), and possibly the procurement team. Ideally, this meeting should take place a few weeks before the development phase begins to ensure that everyone is on the same page and that there are no unexpected roadblocks during the development process.
Goals of this meeting:
- Communicate and formalize the technology stack
- Where does the codebase live - this is usually a repository in GitHub, Bitbucket, etc.
- It’s a good time to start thinking about website domains and getting the one you’d like to use.
- Identify the main points of contact for each team.
- Align on launch timing (the date may not be exact at this point, but try to get general idea).
Create a preliminary launch plan
This will include information captured in the meeting like launch date, site URL, site repository, and fallback plan in case something goes wrong during launch.
Select hosting provider and align on budget
- Figure out the best hosting provider based on the requirements of the application and the company’s needs.
- Including the expected traffic levels of the application, number of environments needed, servers capacity etc.
- Agree to a budget/estimate for the platform.
At Viget, we use Infrastructure as code (IAC) tools specifically: terraform, packer, and ansible to provision and manage the resources the platform needs. We make a note when the process differs for Managed Hosting (such as WP Engine)
Set Up a servers repo
Build the IAC code based on the agreed-upon hosting provider and technology stack. In order to deploy, the infrastructure the team will need credentials to access the accounts. Running this code will set up the environments.
Note: If you are on Managed Hosting, your website settings, such as database connections, email settings, and security measures will be configured through your hosting provider's control panel.
Deploy your code
Set up continuous integration, continuous deployment (CI/CD) pipelines in your code repository and deployment pipeline provider (These can be the same service). We typically use GitHub Actions for CI/CD. Once the pipeline has been configured the automation will handle publishing updates to your environments. When this is done, your code will be viewable by the project team in the different environments.
Note: If you are on Managed Hosting , you may have to upload your website files (your code files and media) manually: You’ll need to upload the files of your website to the server space provided by your hosting provider.
Pre-launch set up
- Lower time to live (TTL) on the site’s DNS records. We strongly recommend updating the TTL to a much lower value than usual, which will result in a much faster and smoother launch, with minimal impact on users.
- Ensure redirects are entered correctly.
- Get final launch approval – confirm all content is entered and QA is performed across the site
And finally: Launch the website!
- Once everything is ready to go you can make your website live by pointing your domain name to the production environment. This can be done by updating your domain name's DNS records. This is usually the client’s responsibility.
- Ensure HTTPS is in place and the SSL certificate is provisioned
- Delight your customers with their brand new website ;)
DevOps Terms 101
Ansible is a suite of tools that enables software provisioning, configuration management, and application deployment functionality.
Amazon Web Services (AWS) is a cloud computing platform provided by Amazon that offers a wide range of services and tools for computing, storage, database management, analytics, machine learning, security, and more.
Continuous integration, continuous deployment (CI/CD) is a method to frequently deliver software to customers by introducing automation into the stages of development. The main concepts attributed to CI/CD are continuous integration, continuous delivery, and continuous deployment.
Deployment of a website refers to the process of making the website available for users to access on the internet.
Domain name is the unique name that identifies a website on the internet. It helps users find your site easily instead of using its internet protocol (IP) address. An example of a domain name is viget.com or google.com.
GitHub is a web-based platform for version control and collaborative software development. It provides a hosting service for software development and code sharing that allows developers to collaborate on projects.
GoDaddy is a company that provides website domain registration, website hosting, website building, and other related services to individuals and businesses.
Environments are different versions of a website, that allow for testing and development. The environment that is accessible by clients is often called the “Production” or “Live” Environment.
Hosting refers to the service of storing and making web pages and other online content accessible to users via the internet.
Hosting Provider is a company that provides server space for your website to be stored and accessed on the internet.
Infrastructure as code (IAC) is the process of managing and provisioning infrastructure through code, rather than interactive configuration tools or other manual processes which drastically reduces human error.
Managed Hosting is a type of one-size-fits-all web hosting service in which the web hosting provider manages all of the technical aspects of the server and website on behalf of the client. This can include tasks such as server setup and configuration, software updates and security patches, website backups, monitoring, and technical support. Generally this comes with a “walled garden” experience which can work for platforms that conform exactly to the provider's web hosting service, but limit what can be created and introduce friction into the development cycle.
NameCheap is a domain registrar and web hosting company that provides a wide range of services including domain name registration, web hosting, SSL certificates, email hosting, and website builders.
Packer is an open-source tool for creating identical machine images for multiple platforms from a single source configuration.
Secure Sockets Layer (SSL) certificate is a digital certificate that authenticates the identity of a website and encrypts data sent between the website and its visitors.
Technology Stack (or “tech stack” for short) is a combination of software tools, programming languages, frameworks, libraries, and operating systems that work together to provide a specific functionality or set of features in an application or website. For example, a typical web application stack might include an operating system such as Linux, a web server such as Apache, a programming language such as Python, a database management system such as MySQL, and a front-end framework such as React.
Terraform is an infrastructure-as-code tool that lets you build, change, and version cloud and on-prem resources safely and efficiently.
Time to Live (TTL) is an indication of how long a DNS record is cached and how long something can take to get refreshed for users. A big TTL number can result in some users seeing the old version of the site and some the new.
URL stands for Uniform Resource Locator, it is a string that consists of several components. For example https://www.viget.com/articles/ is a URL that included the protocol (https), the domain name (viget.com), and the path to the specific resource (articles).