about production environment - N4SJAMK/teamboard-meta GitHub Wiki
About the production environment
This document is about the reference production environment that is developed by our N4S@JAMK project team in order to maximise speed of software production in the most DevOps and Lean ways possible.
#Tools
##Teamwork & Organizing of Tasks Our agile team uses Scrummish ways of working to reach goals and to provide transparency.
###Dropbox A storage for pictures and other data.
###Flowdock Chat to enhance communication between teams and other stakeholders. With the User voice integration, Flowdock notifies about feedback coming from users. This allows us to react better and faster to bugs and improvement suggestions.
####Hubot This fast fellow lives in our Flowdock channel. Hubot is an irc bot that can be used with many different chat services using different adapters. Hubot is open source project written in CoffeeScript on Node.js. There are many useless and useful plugins available for hubot. Our favorite is one of our employee's lunch plugin that fetches all the near lunch choices for us when it's lunch time.
###Trello Trello is for organizing tasks in form of cards. Trello is a list of lists, filled with cards. Cards contain ability to add comments, upload file attachments, create chacklists, add labels and due dates, add mambers and votes.
##Design & Development
###NinjaMock UI Design tool to rapidly build wireframes, mockups and lo-fi prototypes. Building prototypes fast enables quick usability tests.
###GitHub Version management. GitHub wiki is a knowledge base for everyone, it enables transparency.
##Continuous Integration
###Jenkins Continuous integration automation tool. Jenkins allows easy automation of deployment and testing jobs. Integration with GitHub is easy by using existing plugins. When new push is made to GitHub, Jenkins launches an automated testing and deployment job.
##Continuous Deployment
###Ansible Modern automation and configuration management tool. Ansible replaced Puppet as our main automation workhorse. It is used for server management and application deployment in our environment. Ansible uses SSH instead agents which means that a simple SSH server is all that is needed at the target systems. Great core library has modules for almost everything. In our environment Ansible is capable of making whole contriboard installations out of nothing.
##Quality Assurance, Test Automation
###Visual Test
Model-based testing tool for creating, maintaining and running tests. First model is created to reflect the system under test (SUT). Then it can be executed for example in offline mode to perform acceptance testing or online mode to perform performance testing. After model is created and tests execute properly, it can be attached to Jenkins so the process is automated and executed every time a new version of the SUT is built.
###Robot Framework Generic testing automation framework for executing automated functionality test scripts. Robot scripts consist of simple, English keywords, making the scripts readable and easy to maintain, Making the scrip in RST-format makes it also possible to have the script as a full test document in GitHub wiki while still being able to execute it normally. This along its ease of use are the reasons why Robot Framework has been part of our tool chains, at least on some degree.
##Production
###Amazon web services
Cloud platform where our servers are located. Provides actual private networks, which are required for our toolchain.
###Docker
Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Docker helps us to deploy our service without worrying about platform. Using Docker containers also helps us avoid certain compatibility issues.
##Monitoring
###New Relic New Relic is a commercial monitoring service that we are using in our environment. We are using the free version of New Relic which is a bit restricted when compared to the paid option. New Relic has agents that can monitor applications or servers. In our environment we are using New Relic to monitor both, server resources and application metrics. New Relic is easy to install to server with Ubuntu package manager. Also agent integration with nodejs application is very easy requiring only few lines of code.
###Sensu Sensu is a very simple but versatile monitoring framework. At its own, Sensu does not do much but it is capable to almost anything monitoring related with different plugins. This is both strength and weakness. Because of plugins, Sensu requires a great amount of configuration for it to work. On the other hand, Sensu can be used for many monitoring related stuff because the plugins are easy to make and there is a huge amount of ready-made plugins available. In our environment we are using Sensu to monitor if docker containers are staying up. If a container crashes Sensu sends a message to flowdock which should alert the ops team.
##User Feedback User can give feedback through the feedback system when using product. Well-functioning feedback loop reduces risks as well as improved collaboration reduces risks, as stakeholders are intimately involved. Read more about the feedback process
###Uservoice Uservoice widget is integrated inside product.
####Flowdock integration Uservoice keeps team updated about incoming feedback by giving notifications to Flowdock.
###Zapier Zapier recognizes bug reports from Uservoice feedbacks and sends to GitHub.
####GitHub Creates an issue of the incoming bug report.