Adding professional tools and best practices to your side projects
I have been working on a personal project to build an IoT platform for a long time. The project has evolved tremendously in recent years, and I noticed that I did not have any history tool to register all those changes, among other things. I had a Word document with a TODO list with all the tasks I needed to complete, but this did not aggregate a professional style to my project. That’s why I would like to share with you some professional tools and best practices that I am using, for now, to add some business kind to my project.
For the following sections, let’s suppose the domain name “your-project-domain.com” is for your project team users, and the domain name “your-project-domain.cloud” is your secondary domain name for your multi-cloud environments on AWS.
NOTE: If you have an existing domain name for you project, I suggest you continue with the next section to create your business email address. With this email address, you can create your main AWS account and transfer the domain name from your original DNS registrant to AWS Route 53 service.
You can acquire a “Business Started” subscription using G-Suite with your domain name. With this paid subscription (about $10 per month, per user), you can create at most 10 user’s accounts and have business emails like “firstname.lastname@example.org”. Also, you have access to other tools like Google Meet or Calendar or to organize your team’s meetings or task reminders, respectively.
If you acquired a second domain name for your multi-cloud environments on AWS, you could add this new domain name to your existing G-Suite subscription. This is important to your billing process because you do not need to open another G-Suite account for each domain name that you own. I recommend you to use this secondary domain name for another working team in your G-suite subscription, intending to have the admin users their own accounts, not an alias for existing users with your principal domain name. This is for security reasons.
The Jira Software is an essential building block to manage our MVP projects, and it does not come alone. You can create a free subscription for a maximum of 10 users, which applies to Confluence. Remember to use your business email address to complete your Atlassian account and invite other team members. Additionally, you can verify your domain name to allow only users with that domain registered to your subscription.
Recently, I acquired a subscription to use Draw.io plugging, which I can use to draw some architectural diagrams and reference them from your Confluence product. You can also store the architecture diagrams in your business Google Drive account.
Finally, you can connect your AWS CI/CD pipelines to your Bitbucket repositories. Years ago, this was impossible, but now, AWS CodeBuild integrates with Bitbucket repositories to run your pipelines.
NOTE: You can find interesting tutorials of the Atlassian products on YouTube, or you can get a course on Udemy, if you want to specialized in these tools.
Multi-account environments on AWS
Now, it’s time to start with best practices. I recommend you use different AWS accounts for all your environments. For example, imagine that you have 3 environments: development, staging, and production. Well, following this best practice, you must first create 3 new accounts using your G-Suite subscription-like these:
email@example.com; firstname.lastname@example.org; and email@example.com.
Once inside your AWS root account, you can create, for example, organizational units, user account, policies, etc. And of course, you can invite other team members (using their business email addresses) as indicated in the next section.
It is best to centralize the management of all your cloud resources in a single account. Using your root account, you can create, for example, organizational units, new user accounts, and simplify the billing payment method for all your user’s resources.
Now, you can associate your multi-account environments (created in the last section) to your new organizational units, having a centralized control of all used resources from all your users, and see the billing details about those resources usage.
In this link, you can find some essential recommendations from AWS to create organizational units for your enterprise that you can find interesting if you have an advanced project structure or business.
Using AWS S3 to provide a Static Web Site
In this last point, you can acquire a HTML template from sites like ThemeForest or SquareSpace for you project. I suggest you to find templates for startups, if you like to convert your project into a business in a near future.
Once you acquired the HTML template that best fit to your project objective, upload the file content of your new HTML template to an AWS S3 Bucket. Then, you can convert this bucket into a Static Web Page, in where AWS provides you with a generated URL for your web site. You can find more information in this link to perform this activity.
Finally, If you are using AWS Route 53 to host your domain names, you can update your hosted zones using the AWS Console to redirect the internet traffic from your URL S3 Bucket, to your “www.your-project-domain.com” domain. You can find more information about this activity in this link.
NOTE: You can use the aws-cli to synchronize your AWS S3 Bucket (with your project HTML template) with a local copy of the bucket in your personal computer, simulating a development environment of your web site. You can even have a git repository with your HTML template on GitHub or AWS CodeCommit if you want to store all the custom changes made to your site template.
I hope this information generates value to your personal projects. Remember, it is so important to provides a beautiful visualization of your project development to your potential clients, but do not forget that all your internal process of management must be aligned and well ordered too.
Have a great day.