Saturday, August 18, 2018

Agile Software Development 

Agile software development has evolved in computing industry gaining everyone's attention. In this article I am going to explain few important facts about its components. 

What is a User Story?

Basically it should describe a functionality that will be valuable to a user / purchaser of a software.

It should comprised of :

1. Description of the story 
2. Conversations we had regarding the user story.
3. Tests to determine when the user story is completed. 

Importantly ,

* User stories should represents the functionality that will be valued by users. Users will not be interested in technical details of the system instead the output they expect.

Eg: The system will use mysql as the database. 

- This does not add a value to user unless the system is going to be interface for using DB's. 

* If the story it self is very large you can break them into several stories. 

* Ideally a user story shall be coded & tested spanning from a day or perhaps half a day to one or two weeks.

* Remember the user stories should be written in the language in business rather than set of technical jargon. Story cards are not contracts its more of a reminder to dev & customer to start the conversation where it was left. 

* Characteristics of a good story are : value added to customers , negotiable , testable , small , estimable , independent. (try to avoid dependencies between stories since this will lead to need of prioritization)

What is velocity? 

After the team decide what  is the iteration length of the project ( i.e each project will be divided into similar size iterations ) the developers will estimate the work they can cover per a iteration. 

Monday, August 13, 2018

AWS - Terraform Short Notes


1. Authenticating & Authorising AWS User for using terraform 

 AWS User - > Give Policy -> Credentials download -> Pass credentials in terraform

* You can do it in two ways
    a) As a provider
    b) Directly export AWS_ACCESS_KEY_ID & AWS_SECRET_ACCESS_KEY

2. Creating EC2 instance: -
     terraform init - Should run when created a new terraform file / cloning one from git. Safe to run multiple times. Will make the current terraform WD up-todate.
     terraform plan  - will create the AWS instance plan
     terraform apply - will create the AWS instance ( if you make a change once you execute plan & apply commands now you want to change an existing iname of the EC2 instance do it and just use "terraform apply ")

3. Removing the EC2 instance:-
     terraform destroy

4. Printing Output Variable

      output "my_public_id"{
      value="${aws_instance.dimuthu.public_ip}"
     }

5. Creating security groups
    * When creating security groups point to ponder is to you need to :
            1. Create the security group
            2. Add a policy to security group

So lets create a Bastion Host Security Group - The only host expose to outside world which filters malicious attacks. Places probably between one / two firewalls.

Ingress traffic - Data from outside is transferred to local network.
Egress traffic - Data inside the local network is transferred  to outside world.

     resource "aws_security_group" "default" {
     name= "My_Security_Group1"
     }