DevOps

Proactively towards changes

DevOps

What is DevOPS? Devops, being a mixture of development and operations is a new way of working that allows developers to better understand how operations work and vice-versa. Devops helps you to automate certain tasks that normally would take extra hours. Every task being done more then once should be automated.

This approach has been in IT for several years now.
Where does Tameshi fit in all of this?

Well.. we take DevOPS and AWS to the next level. With Tameshi you can solve common problems in DevOPS world by implementing CI/CD for your software, implement QA for your testing team and train your developers in the most efficient way of working with AWS.

Having problems with software quality and the testing takes too long?

Each time new software is released it should be properly tested. Every additional line of code added in one place can break software in the other one, leading to situations when developers write their code and unintentionally break other people’s work. Capturing such bugs can be cumbersome, especially in situations where you have many many developers and limited testing team.

Tameshi helps you to solve this problem by implementing a Continuous Integration tools that help your teams to work faster and be more agile. We use tooling like Jenkins, AWS CodeBuild, AWS CodePipeline to help you get test results as soon as you commit your code.

Tameshi typical pipeline used in the software development process:

  1. Post commit – quickly verifies if committed code meets the coding standards (inc. flaws like typos, indentation, naming convention, and other common errors etc.). It is triggered right after commit and let’s your developers receive notifications straight away if any problems occur.
  2. Nightly builds – allow to run full set of automated tests against produced software. Full set of tests usually can take up to several hours depending on the amount of functionality being tested. This kind of tests are run everyday whenever a code change is made and allow your developers to receive full test result and help to identify problems between modules as soon as possible.
  3. System tests – allow to run prepared tests against your software and serve as a first step prior to releasing the software into production usage. You choose number of tests to be run at this stage – they can be the same as the nightly builds or can be limited. Based on Staging Build we create a tag in your repository that ensures that code beyond this point should not be changed on the production environment. This can be either a Docker Container pushed to ECR, AMI image for your EC2 or just a tag in GIT. Usually at this step software is verified by testers on the client’s side to see if frontend matches their needs, if logic is correct, etc. Data used by software is obfuscated and decoupled from production.
  4. User acceptance test – designed to use the image/tag created in Staging build. At this step software is usually shown to the end customer and has passed all the company’s internal testing stages. Data used by software is obfuscated from production data but is not limited in size.
  5. Preprod environment – at this stage we take the full productional data and perform a test deployment.Being one step from going into production, we test if deployment will go as planned and see how software behaves on production data without obfuscation.
  6. Performance testing – a final (and optional) step utilizes full AWS potential to test how your software will perform under heavy load. It not only verifies how software behaves, but also tests how AWS handles increased traffic, if auto scaling works properly and the load balancer spreads traffic accordingly. Those are the key points which we thoroughly check at this step.
  7. Go to production – this is the final step of almost every software development process. Here, we perform green – blue deployments whenever possible, we always use the best of AWS best practices to limit downtime only to necessary minimum as we know how important accessibility is to our customers.

Frequent app outages?

Each time Your application goes offline you lose money.
They can be counted as lost profits or the actual money You need to pay as You go beyond your SLA agreements that You are bound with the end customers.
In Tameshi we can help You to limit such app outages by implementing AWS best practices in your setup. We can solve your outage problems by implementing self healing mechanisms or by implementing high availability. Such actions may require some application changes but may as well be done without performing any code modifications at all – it differs case by case and requires deep analysis of your current software.

Need faster deployments?

We have heard stories about applications being delivered, where deployment took several hours, including downtime of crucial applications for the exact same amount of time.

Using Tameshi’s AWS insight knowledge combined with AWS best practices we help you limit the downtime of your applications to the absolute minimum or ensure continuous availability without any downtime at all. In order to achieve these goals we use Continuous deployment methodologies like blue – green deployments, geographical deployments and we advise on how to create deployment pipelines that are hand crafted for your application and business needs.

We create all of our pipelines as automated as possible by leveraging IAAC methodology.