Here we will go over the basic steps that we followed during the process of getting started and setting up our Amazon web server. Here are the first few steps that we followed:
- Create an AWS Account – follow this link to create your AWS account, that is the first step in getting started on Amazon AWS. If you already have an account skip to the step #2. Following is some list of services you can signup for – figure out which services is required for your application:
- The basic foundation services Amazon AWS provides are: Compute, Storage, Database and Networking.
- For our application purposes we figured we will need to use 2 of AWS services, Amazon Elastic Compute Cloud or EC2 and Amazon Simple Email Service (SES).
- Let us go over how to get started with Amazon EC2 in this article and we can go over the SES in next article.
- Once you have decided that you need to go with EC2 figure out which version of EC2 do you need to use, Linux or Windows?
- We have a LAMP application so we needed to go with EC2 Linux instance.
- Here are some pre setup steps to get Started with Amazon EC2: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html
- Here are the steps to launch a linux Amazon EC2 instance : http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html
- Here is how you can install LAMP web servers on Amazon Linux EC2 instance: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html
- We needed to install phpmyadmin as our outsourcing team was comfortable using that – I would not recommend to open up your mysql on web but temporarily we did open it. Here is how we go the phpmyadmin working: http://geekact.com/2115/install-phpmyadmin-on-vps-or-amazon-ec2-and-vpc
- You might need to tweak your .htaccess file in phpmyadmin directory to get it working.
- Here is how you can transfer files to Amazon EC2 Linux instance using SCP: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html#AccessingInstancesLinuxSCP
- You can also use SFTP to transfer the files. For that you need to open the SFTP port, you can refer to the link in #7 to see how can you do that. Then use the .pem file you downloaded – you can add that to your preferences on your FTP client. For example, with Filezilla I add that file to preferences-> SFTP -> Add Keyfile-> upload the pem file here.
- Here is how you can use WinSCP to copy the files: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html#Transfer_WinSCP
The above are basic steps that you would follow in order to create and Amazon EC2 Linux instance, install the LAMP server and transfer your application files. If you need to work with a Windows instance please follow the link: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2Win_GetStarted.html
If you are planning on using the Amazon Free Tier, and want to know more about it please refer to: http://docs.aws.amazon.com/gettingstarted/latest/awsgsg-intro/gsg-aws-free-tier.html
Hope this article helps you get setup with Amazon AWS. In the next article we will go over SES setup.
I think when you are working with offshore team or outsourcing company – this particular phase is the most tricky to deal with. Because most of us now a days are so accustomed to work with internal QA team. Things take a drastic change during the Testing and Bug tracking phase. And that is another reason why services of a company like “HeliDigiZen” come in handy. As we know what we are dealing with and know how to handle this. During the testing phase if you uncover a bug – the fix needs to go through regression testing. So not only you have to test all the flows once the bug fix in place – you also have to test it across all the devices as well. You have to make sure the bug fix under one flow is not introducing new bugs on another flow and make sure none of the old bugs are coming back in while merging the changes while deployment.
Most of us now a days have our own favorite bug tracking system but while you are working with the outsourcing company it is best to work with a bug tracking system that works for both the parties. You don’t want your outsourcing resources to waste time trying to figure out how to operate a certain bug tracking system at the same time you don’t want to go through that process either. This is where some innovation comes in handy. We developed our own bug tracking system using google docs and google spreadsheet – as most of the people know how to use it and it does not require any additional software to be bought or installed. This helped us solve a few issues that we were facing,
- Now we always had a way to track what is happening with each bug reported – as we had 5 state defined for each bug – Open, Working, Fixed, Verified and Reopened
- Every one had an easy way to reproduce the bug – as we always defined the steps to reproduce when reporting a bug – very important
- It was simple to go through all the list of bugs while testing different flows and making sure none of the old bug are coming back or we are reporting the same bug again and again.
- And it was simple to reopen a particular bug just in case we see it again rather than reporting it all over again!
Up until this point we had always been working on the outsourcing company’s server but at this point we realized we wanted some control so we had them deploy the project on our end – so we can keep on testing while they are still working on bug fixing on their end. Helped us out a lot, and gave us an idea of “Pre Beta Launch” as well. But now we needed a way to track 2 different versions of code and an ability to report bugs for each one. It was pretty simple to accomplish using our own tracking system.
Once we were fairly confident of how things are working on our own server, we wanted some additional user feedback. We wanted to make sure that the flows are tested by some users who had no idea how this is suppose to work, and that is when we came up with the “Pre Beta Launch”. At this point we invited a few of our friends from technical background to do a test run on our system – and help us with some feed back. A great step – as that helped us understand what flows are confusing, some text revision needed and also gave us some confidence that we are pretty close to the Beta launch.
How did we go about our Beta launch? That we will cover in our next post!
The development phase starts when you approve the design PSDs and the team starts to work on converting the PSD into HTML pages and actual flow design. Here is where your SOW is going to come in very handy, and in our case a well defined SOW made it a lot more easier to navigate through this phase. This phase is when you will want to have well defined internal milestones where you run the testing of various flows as they are getting built and put in place. The well defined testing milestones are important so that you can discover any issues in the flow that you have defined or uncover any gap between your and your teams vision. You want to identify it sooner then later, because it will involve a lot more to change it once the backend is in place,
Also the thing that you should keep in mind is SEO and how you want to use any mark up language or Rich snippet. We used various tools while navigating through the development phase
- SOW – A well defined SOW is very essential during the whole project life cycle but during the development phase you are going to get the maximum usage out of it.
- Basecamp – To keep every one informed about all the steps being taken and all the comments or conversations being done.
- Bug Tracking System – A good bug tracking system is very essential to keep track of all the open issues and check how the progress is going – we had to come up with our own that we developed using google docs and google spreadsheets
The first milestone we had defined was converting the PSD to HTML and just have the page to page flow. This is done by simple linking between the pages with no backend. This process is very similar to the tool “Axure: Interactive Wireframe Software & Mockup Tool”, if you are familiar with it. The only disadvantage with Axure is you are not able to take the “HTML” pages that Axure creates directly into your project, where as in when we used this approach we already had HTML pages ready to be used directly in our project. Just as an additional note, it would be a good idea to use some SEO tools to help you with any markups or Rich snippet. As you already have some HTML example pages defined.
By first defining the basic flow with just HTML links – we were able to examine each flow and refine and correct it if need be without putting a lot of work on the back end. This was a great way of eliminating a lot backend changes for simple design tweaks. And it also gave us a way to make sure that the offshore team and us were on the same page as far as the basic flows were concerned. Very important when you are working with the offshore team.
Once we had refined the basic flow – the development phase milestone 2 work began. The milestone 2 was defined at putting the backend for those flows. But we wanted to work through one flow at a time. For example in our Toysshare project there are 5 main flows,
- Sing up/Login/Logout
- Listing Toys for Sale/Swap
- Searching for Toys
- Contacting the Sharer
- Admin Panel
Again as each flow was put in place one milestone was achieved and we tested each flow individually as they were put in place – this eliminated any refinements still needed in each individual flows without affecting the others.
And as the last milestone we put all the flows together and tested the whole project making sure that all those flows interact with each other the way it was expected. At this point after any fixes you should do regression testing to make sure the fix does not introduce any new bugs or while merging the files some old bugs don’t come back. – This is where we had to develop our own bug tracking system to make sure we are on top of each bug and we are doing regression testing at each level.
Also here is when all the mobile devices come into play. We wanted our site to be responsive – meaning now the testing had to be done on Windows PC, MAC , IOS, Android and Windows Phone. It helped a lot on how we had designed the milestones and testing setup – as most of the corrections and refinements were done way ahead of this final testing phase. In the next post we will go over Testing, Bug tracking and Beta launch in more detail.
While we were going through the design and development phases for Toysshare.com – we realized that working with an outsourcing company had to be handled a lot differently then working with an in house development team. As we moved through the Toysshare.com we got fairly aware of things that you need to keep in mind while you are working with an outsourcing company – and it eventually became a usual practice for us.
At that point we decided we should form a consultation firm “Helidigizen” – that can help people go through the outsourcing process. Essentially helping companies get their idea executed to a final product but guiding them through all the steps from defining SOW, getting in touch with right outsourcing company, and helping them out with the communication and execution during all the following steps,
- Design Phase
- Development Phase
- Testing Phase
- Deployment Phase or Beta Launch
We take care of choosing the right outsourcing model, choosing the right company and all the midnight communication needed through the proper execution of the project for them. And since we have gone through the process our selves multiple times it comes naturally to us on how to get the best results from the outsourcing company for the money.
It makes complete sense to get the project executed through us for all as we work with the outsourcing company on a long term basis, we have a trust relationship already built with them. As a result we have a much easier communication channel with them. For the outsourcing company too as they are dealing with the same people frequently it just becomes much more simpler. We already have some standard procedures setup and they don’t have to keep on revising them for each of our clients. This way we can achieve the results much faster which translates into increased efficiency!!
How do you get started once you have narrowed down the company and given them SOW – what is the next step?
Well we had an advantage that we were able to meet the project manager from the outsourcing company while we were there. That gave us a chance to discuss the SOW and clear out any doubts. Once things were put into perspective with timeline and milestones the real work started. I can see the project life cycle over 4 phases:
- Design Phase
- Development Phase
- Testing Phase
- Deployment Phase or Beta Launch
Please keep in mind that for the timeline and milestone to be met your input is very crucial in each phase. Especially the design phase as it is the base on how soon you can get to the next phase and keep on moving forward.
During the design phase they tried to design the logo, the color scheme for the website and a few important pages. We had defined our SOW in the terms of pages as well which made it a bit simpler for them to come up with the design for each page. They were able to provide us with a few options on logo/ color scheme and home page psd. Once we approved those the other few page designs were done. The best way to get the communication right at this point is to use the visuals. We created very basic wireframes most of them had drawn on the paper and give them reference to some websites that we liked the designs of. That made it very clear for them to understand what exactly were we looking for.
For each design that they submitted we were able to identify the elements that we liked and the elements that we thought should be changed. And we defined the changes with some visual reference making it easier for them to understand what we are looking for. One note here – it would be a good idea to identify all the message and confirmation text and put it into words for them – as the languages over different countries differs a lot and this way you have covered it at very first step.
It is very important to make sure that both the teams are on the same page in terms of design at this stage as – once everything is approved you go into development phase with the correct design in mind. Which will make development phase a breeze.
We will talk about what to keep in mind during the development phase in the next post.
While we were deciding what is the best outsourcing option for us we went through meetings with different companies. From what I have observed during that process we can categorize the outsourcing options in below different categories
- Small Scale
- Medium Scale
- Large Scale
- Individual Free Lancer
Our elimination process worked in the following way -> Because we needed a fast turn around time we had to eliminate a couple of small scale companies as they could not start on the project right away. Some of the individual free lancer were available to start right away and were reasonable too – but the issue came down to they not being able to support our need for a design team. And once they would take up another project we were worried about the support we would get from them even after the project was over.
Now we were left with 2 options – Large Scale and Medium Scale companies. For a large scale company we were a small client and I was not sure if they would move around resources if they get some request from some of their regular big clients. And the last thing I wanted during the execution was change of the person in the middle of project.
Once we had narrowed down our search to Medium scale companies we met with a few of them and chose the one who had mostly work with US client and knew how quality mattered. Also influencing our decision was the communication and trust we got built up while meeting. They were ready to sign the NDA and they were able to provide the timeline and broken down hour structure for the project. And I am very happy to say they really were able to stuck to the timeline and deliver milestones along the way! They were also able to support us even after beta launch which was one of the most important thing for us.
Of course during the project we did come across quite a few things that you would need to keep in mind while working with an outsourcing company – and we will be covering those within the next few posts.
After opening a bank account and getting everything setup with the company, we decided that we needed to register as an S corp – Small Business Corporation.
Here is how we did it, we filed the IRS form 2553 and mailed it to:
Department of the Treasury Internal Revenue Service Center Ogden, UT 84201
We did a certified mail and kept a copy so we can verify that the form was mailed in accordance with timing restriction.
Here is the reference website,
Once we decided on company name and registration process. We filed the articles of incorporation with Secretary of States – here is the reference website
Once we received our registration confirmation – we needed to get an EIN number so we can open a bank account on the company’s name. So we filed the EIN Individual Request – Online Application. Here is the reference website,
Once we filled the application we were able to get the EIN approval by mail within a few days, which contained our EIN number and instructions on how and when to file the taxes.
At this point we were ready to open the back account. You can shop around for that, different banks offer different benefits and negotiation is always an option. Here is the reference website,
PS: Our articles of incorporation was returned once because we had forgotten to put the address in, so make sure to fill in the information accurately. We also requested a copy of registration – it is an additional fee but we wanted a copy.
You can always consult a CPA or a lawyer to help you with this process.
We had formed the idea of toysshare around 3 years ago, never got a chance to pursue it. But when we decided that I was going to quit my job I thought let me pursue the “toysshare” idea further now that I might have time! Well I was not too accurate on time but that story some other time, we did decide to go along with toysshare.
The first thing we did was to ofcourse come up with the domain and register the domain name – I already had a blog earlier on godaddy.com so I went ahead and registered the domain name toysshare.com – unfortunately toyshare.com was not available. But we went with the simplest one – you might want to try and come up with a creative one, we did try that but we couldn’t agree on any other name!
We did not own a company at that point and we reside in California, so we went ahead and registered a company in CA. Here is a link on what you need to do if you want to register a company in CA:
We went with a different name for the company, we had another domain already registered and hosted on godaddy so we went with helidigizen as a company name. At this point helidigizen was the company which is going to launch the portal toysshare.com.
Both of us being in the technical field we thought we would be able to buy some off the shelf software and modify it to fit our needs. But we did not end up liking any of the off the shelf software as we wanted to have the option of “Swap” which was not supported in most of them and a lot of those software did not come with the code that you can modify. As a second step we thought we can try to do it ourselves and we did start working on it and had a few different prototypes done, but that is when I realized, with 2 little kids I won’t be able to put as much time as I thought earlier for this project. And that is when it hit us that we might have to outsource the development even though we both might be able to do stuff on our own, we did not have enough time to get that done on our own!!
So moral of the story in this first part was : Even if you think you can do it – you might still have to end up outsourcing some things as you might not have enough time to do it.
Finding the right outsourcing company and having the right resources to provide them was a whole another story, and I will cover it in my next post
PS: Later we found out that we might have saved some money if we would have registered a company in some other state where the annual tax might have been waved! You should probably do that research if you are interested in saving the tax money.