What Reminds from Continous Devilery and Design Conference by Thoughtworks
The conference was hold on September 11, 2014 in İstanbul, Turkey. I want to briefly explain the importance of the conference and what was learnt from it. Thoughtworks, as a well-known consultancy firm in the world, has entered the Turkey's software market. This means that there will be something changes in software industry since there are lots of consultancy firm in Turkey and they have got one more competitor. However this is not an ordinary competitor, they may possibly bring lots of experiences and different kind of consulting culture from the other consultancy firms.
What is the situation in Turkey?
As I mention, there are lots of software / test consultancy firm but majority of them work as providing developers / tester to companies to work as outsourced. Therefore the guys generally fell alone when doing their jobs because there is generally no technical supports for them to improve their abilities. Also the major problem in Turkey is software development process. Even they don't have a scientific process of development or they have applied some methods without knowing them correctly. Everyone talks about "agile", "scrum", "tdd", "bdd" and some other popular words but none of them know these processes correctly. Their experience generally are based on a book or learnt from an earlier companies incorrectly. Under this conditions, providing some guys to the companies and not giving technical supports to them is useless. It doesn't mean to be a consultancy firm, it is just providing people to some companies' inconsistent process. With this way, there is only one beneficial part to the company that they can request another guy to work with if they don't like him and also these guys don't have companies standart benefits. As a result, I have met a small amount of people who would like to work for consultancy firms.
What I learn from this conference?
- Deployment pipeline: It is the main part of Continuos Delivery. It divides the build system into different functional parts which is to fasten the feed back system and finally brings faster development process. With this way there is an opportunity to parallelize any stages which makes bottle-necks on the deployment pipeline.
- Continues Delivery: Simply, ability to deploy to production. This means that there is always a code that can be deployable to the production. So new features are implemented and tested, another meaning of the feature, it is "DONE", everything works fine. Therefore, we may talk about "one-click-deployment" which means that the features which are DONE can be deployed to the production.
- Continuos Deployment: Simply, doing deploy to production. This is one step ahead of continuos delivery. We have deliverable features on the test servers and then they are deploying to live servers automatically. To enable this feature Fowler mentions that there are two live environment and these are called blue-green environments. Assuming that the blue environment is live, final tests are run on the green environment and if the test are completed successfully by switching router to green-environment and make it live and finally the blue environment is now ready for another deployment.
- Automate Everything: Automation is generally understood as automating some test cases but in continuos integration, everything on process can be automated. Building, deploying and test should be automated. To make it possible, we should have configuration management. Another meaning someone should manage these things and write some automation scripts. A new role is needed, this role is different from a classical role system administrators or developers or testers. These kind of operation are handled by DevOps, which means development and operations.
- Why Continuos Integration is important: Risk! What ever process we have, we will always have lots of risks. To reduce the risk, we should reduce the delta. For example, deploying 1 week difference to live has low risk than deploying 1 a month difference to live. The level-of-concern (LOC) will depends on the level of difference.
- "Done" has different meaning: When the developer say "I finished, it is DONE", it doesn't mean to deploy to live. We still have some test and QA procedure and then if everything is fine and if we deploy the feature to live then we can it is DONE. Done has one meaning is that the feature is live and user can use it.
- Test It Before Get It: Write test cases before the story is implemented so that the minimize the manual effort. We can use cucumber that customer or any business people understand the result so it can increase customer engagement.
- These are just related to continuos integration, but there are some other presentation about Design, NoSQL and Consistency and Case Study by Hepsiburada.com.