Skip to main content

DevOps for Dummies


Everyone talks about it, but not everyone knows what it is.

Why DevOps?

In general, whenever an organization adopts any new technology, methodology, or approach, that adoption has to be driven by a business need.

Any kind of system that need rapid delivery of innovation requires DevOps (development and operations). Why?
  • DevOps requires mechanisms to get fast feedback from all the stakeholders in the software application that's being delivered.
  • DevOps approaches to reduce waste and rework and to shift resources to higher-value activities.
  • DevOps aims to deliver value (of organization or project) faster and more efficiently.

DevOps Capabilities

The capabilities that make up DevOps are a broad set that span the software delivery life cycle. The following picture is a reference architecture which provides a template of a proven solution by using a set of preferred methods and capabilities.
Image result for the devops reference architecture

My Remarks

Okay, that sounds cool. What does it simply mean, again?

The following is a simple case:
- Dev_gap_Ops: you develop and test the system on your test environment but you are not the one test it on real environment. Any updates/hotfixes are operated by other people, not you. That leads some issues such as delay time or misunderstanding between Dev and Ops.
- DevOps: you join both develop and install the system on real environment!

Is that mean a developer should always be a operation/integration guy when applying DevOps?

In my opinion, it must be a dream process but unfortunately, it depends. Due to the laws of some countries, the developers are not able to operate the systems in real environment. For example, some APIs are only exposed in European then Vietnamese developers are not allowed to directly call these APIs rather than European developers.

Therefore, if we understand the issues of Dev and Ops gap, we can figure out the way to adopt DevOps even we are in this kind of case.

Leave your comments about it down below!

Reference

[1]. Sanjeev Sharma and Bernie Coyne, DevOps for Dummies.

Comments

  1. Very Thanks for providing this DevOps Capabilities,It is useful for me and all DevOps enthusiasts. I must appreciate you for taking the time to put this together. Great stuff. Find interesting DevOps blogs below
    What is DevOps
    Types of DevOps Tools
    Best DevOps Tools
    Best DevOps Practices in 2017
    DevOps Interview Questions and Answers
    DevOps Version Control System Git Interview Question and Answers
    Best Regards,
    CourseIng - DevOps Training in Hyderabad

    ReplyDelete

Post a Comment

Popular posts from this blog

My 2017 Review

Passion for System Design After finishing a one year project, my longest stable team (3 years) was separated into two smaller teams. Sadly, but that was a good chance for me to become a key member in my new team. My preferred skills is about system architectures; therefore most of the tasks of building the application structures are handled by me. In order to enhance my design system skills, I have spent much my time for reading books closely after work. These following books helps me a lot.
- Object-Oriented Thought Process | Matt Weisfeld
- Head First Design Pattern | Elisabeth Freeman and Kathy Sierra
- Java 8 in Action: Lambdas, Streams, and Functional-style Programming | Alan Mycroft and Mario Fusco
Junior Technical Architect I was requested to join a technical architect team (aka Team. Alpha) where I actually has gained experiences almost on interviewing candidates for my company (lol). Besides, I noticed myself must improve the skills of convincing people because I have had a …

AngularJS - Build a custom validation directive for using multiple emails in textarea

AngularJS already supports the built-in validation with text input with type email. Something simple likes the following:
<input name="input" ng-model="email.text" required="" type="email" /> <span class="error" ng-show="myForm.input.$error.email"> Not valid email!</span>
However, I used a text area and I wanted to enter some email addresses that's saparated by a comma (,). I had a short research and it looked like AngualarJS has not supported this functionality so far. Therefore, I needed to build a custom directive that I could add my own validation functions. My validation was done only on client side, so I used the $validators object.

Note that, there is the $asyncValidators object which handles asynchronous validation, such as making an $http request to the backend.

This is just my implementation on my project. In order to understand that, I supposed you already had experiences with Angular…

Strategy Design Pattern

For example, I have an program with an Animal abstract class and two sub-classes Dog and Bird. I want to add a new behavior for the class Animal, this is "fly".  Now, I face to two approaches to solve this issue:

1. Adding an abstract method "fly" into the class Animal. Then, I force the sub-classes should be implemented this method, something like:

public abstract class Animal{ //bla bla public abstract void fly(); } public class Bird extends Animal{ //bla bla public void fly(){ System.out.println("Fly high"); } } public class Dog extends Animal{ //bla bla public void fly(){ System.out.println("Cant fly"); } }
2. Creating an interfaces with method "fly" inside. The same issue to abstract class, I force the classes these implement this interface should have a method "fly" inside:

public interface Flyable{ public void fly(); } public class Bird implements Flyable{ //bla bla public void fly(){ System.out.println…

How did I start practising BDD?

At the beginning days I have practised TDD (Test Driven Development) with using JUnit, I approached that I should test methods belong to a class. For example:

I have a class with some methods:

public class A{ public void method1(){ } public void method2(){ } }
And then, I wrote some test methods to check the corresponding ones, for example:

public class ATest{ @Test public void testMethod1(){ .... assertTrue(...); ..... assertEquals(...); } @Test public void testMethod2(){ } }
After that, I know that a test method (ex: testMethod1) should just only tests one thing, so I decided to write more methods for each cases. It looks like the following:

@Test public void testMethod1_When_Case1(){ .... assertTrue(...); } @Test public void testMethod1_When_Case2(){ .... assertEquals(...); }
However, it was not a really good approach because it seems that I just focused on test the functionality of the method of the class. With TDD approach, I knew that I should test the…

Styling Sort Icons Using Font Awesome for Primefaces' Data Table

So far, Primefaces has used image sprites for displaying the sort icons. This leads a problem if we want to make a different style for these icons; for example, I would make the icon "arrow up" more blurry at the first time table loading because I want to highlight the icon "arrow down". I found a way that I can replace these icons to Font Awesome icons.


We will use "CSS Pseudo-classes" to archive it. The hardest thing here is that we should handle displaying icons in different cases. There is a case both "arrow up" and "arrow down" showing and other case is only one of these icons is shown.

.ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s { background-image: none; margin-left: 5px; font-size: 1.1666em; position: relative; } .ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s:not(.ui-icon-triangle-1-s)::before { content: "\f106"; font-family: "FontAwesome"; position: absolute; t…