Any software that is developed revolves around simplifying the task of humans. In regard to this there are many tools which try to simplify the task of people who develop software. We know how widespread is the Agile methodology in software industry and our Emma Bot aims to simplify an important part of their day-to-day tasks. Stand up meetings require physical effort by all the team members and human-computer interaction. Even for these short meetings, developers end up putting some effort. Our aim is to reduce it and eliminate the need of the developer to carefully look at and interact with the Scrum Board(computer).
Use Of AWS in our project -
- Our entire infrastructure is hosted on AWS. Right from baking AMI to create VM, running build tools such as Jenkins on EC2 server, creating Auto scaling group to deploy our production servers, triggering AWS Serverless Lambda function from Alexa voice service and Hosting static site on S3 bucket.
- The User monitoring console hosted as static website on S3 bucket which can be accessed on the web through this link - UI/Portal Sign In page
- Hosting on AWS provides a lot of flexibility in terms of creating security policies and implementing it. We have extensively used AWS IAM policy to create IAM roles for services to consume other services smoothly within private VPC, there by securing our infrastructure.
What it does -
Emma Bot is accessed by using Amazon's Alexa. It is designed to be used by a large community of Agile practicing Software Engineers. Within a stand-up meeting Emma can successfully move tasks as per team member's update on the task's status, schedules a meeting for the team if needed and gives the summary of the team's on-going sprint if asked for. Now instead of looking up the board and the Scrum Master manually moving tasks, user is only giving short instructions as voice input to Emma bot and output is easily provided to the team member.
How We built it -
The Emma Bot's user interface is via Alexa wand/Echo. We have used multiple technologies and integrated them to provide this end-to-end scrum master service. JIRA Software is used for Scrum Board and we have built Java service as well as using JIRA REST APIs to make API calls for task movements and obtain summary report. Alexa is integrated with AWS Serverless lambda function which consumes RESTful endpoints exposed by core scrum service. This core scrum service is deployed as Docker containers in AWS. Google API is used for accessing calendar events and schedule meeting. The complete infrastructure is hosted on AWS, built as a CI/CD pipeline. We have used Jenkins build management tool to build and deploy our services.
Challenges we ran into -
1) Training Alexa to understand user's instructions as it can misinterpret voice input many times.
2) We were adding on features one at a time and faster deployment was a challenge. We solved this by using a CI/CD pipeline to build after every new feature was added.
3) Integration of schedule meeting function with the Scrum Service.
4) We created a portal to see the actions performed by Emma, we initially though of storing all the logs into AWS Aurora RDS instance but it gave performance issues. We resolved this by using in-memory storage of Redis. as an Elasticache service of AWS.
Accomplishments that we're proud of -
1) Perform daily standup meeting task just by giving voice input thereby automating task movement and witness changes on the JIRA scrum board.
2) Reducing each team member's effort and time put in,thereby eliminating need of a physical Scrum Master.
3) Building CI/CD pipeline to make deployment step simpler and making development process smoother. With that we are demonstrating that using DevOps can help you reduce time to market.
What we learned -
- Using REST APIs to implement methods for Java service.
- Writing Alexa skills and training it for customized events.
- Automating actions on two different platforms (google calendar and JIRA board) by providing just voice input.
What's next for Emma Bot as Scrum Master -
- Implementing more functionalities like notes/comment taking from user for his/her tasks.
- Creating sprints/issues although this would require more user input and larger voice inputs will tend to have more errors.
- Make it a cross-platform bot service , example any other Scrum Board softwares like Trello could be used.