Containerise everything!! : using docker in Ethiopia

Posted On 20 March 2020 ( 8.2 Minute Read )

You might have come across buzzwords such as containerization, docker and wondered what all the fuss was about. And why it is important to use docker in Ethiopia. Well, This tutorial series is just what you need to join the conversation. We will look through the basics of docker and why it might be useful to your workflow. Not only that by the end of this series you will be able to containerize your applications and get them ready for deployment.

What exactly is Docker?

Docker is a containerization platform that packages your app and all its dependencies together in the form called a docker container to ensure that your application works seamlessly in any environment. This environment might be a production or staging server. Docker pulls the dependencies needed for your application to run from the cloud and configures them automatically. You don’t need to do any extra work. Below are some benefits of Using docker

1. It is cost-effective: It takes fewer resources to run your production application. And an even fewer team of developers to maintain it. The biggest driver of most management decisions when selecting a new product is the return on investment. And docker has proven to be a very efficient option.


2. Standardization & productivity
: Docker containers ensure consistency across multiple developments, release cycles and standardizing your environment. One of the biggest advantages of a Docker-based architecture is standardization. Docker provides repeatable development, build, test, and production environments. Standardizing service infrastructure across the entire pipeline allows every team member to work on a production parity environment. By doing this, engineers are more equipped to efficiently analyze and fix bugs within the application. This reduces the amount of time wasted on defects and increases the amount of time available for feature development. Another key use for docker in Ethiopia

3. Compatibility & maintainability: Eliminate the “it works on my machine” problem once and for all. One of the benefits that the entire team will appreciate is parity. Parity, in terms of Docker, means that your images run the same no matter which server or whose laptop they are running on. For your developers, this means less time spent setting up environments, debugging environment-specific issues, and a more portable and easy-to-set-up codebase. Parity also means your production infrastructure will be more reliable and easier to maintain.

4. Rapid Deployment: Docker manages to reduce deployment to seconds. This is because it creates a container for every process and does not boot an OS, unlike virtual machines. Data can be created and destroyed without worry that the cost to bring it up again would be higher than affordable. Also by sharing container reduce dependency install time while using slow network making more use of docker in Ethiopia

5. Continuous Deployment & Testing: If you need to perform an upgrade during a product’s release cycle, you can easily make the necessary changes to Docker containers, test them, and implement the same changes to your existing containers. This sort of flexibility is another key advantage of using Docker. Docker allows you to build, test and release images that can be deployed across multiple servers and cloud services like Kubernetes. Even if a new security patch is available, the process remains the same. You can apply the patch, test it and release it to production.


5. Security
: And the last benefit of using docker is — security. From a security point of view, Docker ensures that applications that are running on containers are completely segregated and isolated from each other, granting you complete control over traffic flow and management. No Docker container can look into processes running inside another container. From an architectural point of view, each container gets its own set of resources ranging from processing to network stacks.

Now it’s time to get our hands dirty.  The first thing you need to do is install Docker on your own system and to do that just follow the official guidelines here.

After you have done that clone this sample Project locally. It is a simple Nodejs express server that we are going to containerize using docker. Run the following instructions to clone the repo and start it locally

#clone repo
git clone https://gitlab.com/Dagmawi-A/starterproject.git 

#cd into project directory 
cd starterProject 

#install project dependencies 
npm  install 

The next step is going to be to build our docker image and run it. Don’t be intimidated if the terms seem unfamiliar. We will go in-depth in part two of this tutorial.
Run the commands below

#build our docker image
docker build -t <your-name-here>/sampleproject:v1

#run our docker image and expose ports
docker run -p 8000:8000 <your-name-here>/sampleproject:v1

Now that we have got our application running in our Docker container we can access it locally in our browser. Just go to this link.

Congrats you’ve just created your first docker container. Stay tuned for part 2 !!

Interns Sponsored by Sweetopia and internship in Ethiopia

Posted On 06 March 2020 ( 11.2 Minute Read )

Interns Sponsored by Sweetopia and Internship in Ethiopia

As a student, the environment accommodates itself to be rough in all the aspects possible. Starting from being a fresh year student, up till graduation, and what adds up to that is doing the internship period. It could be a double-edged sword, and internship in Ethiopia is no exception.

With more students joining universities and colleges each year and by the time they reach a certain phase in their higher education journey, the question that usually comes up is, “what shall I do now”? Most people, if asked, would recommend doing internships in Ethiopia. 

Here at Addis Software, we are working closely with Sweetopia, an IT company based in Sweden. Sweetopia brings the experience needed to be a determined developer, with challenging topics to tackle, exciting projects to work on and the chance to work directly with top-notch Swedish developers. 

We are working on several projects which entail building mobile and web applications. Leveraging cutting edge technologies like Google cloud services and cross-platform frameworks such as react-native, our talented team of developers works to deliver high-quality products to our diverse clientele.

Welcoming Interns

The latest additions to our team are, Dagmawi Asfaw, Fireayehu Zacharias, Henkok Akanaw, Leulseged Tariku, and Simret Araya. They are our new interns from various universities and sponsored by Sweetopia. We hope this will be an opportunity for them to expand their skills as well as gain some hands-on experience. They will be led by our senior developers Henok Tsegaye and Abdulhamid Omar.

Current Project 

A new interesting project we are working on is a cross-platform mobile application for a Swedish market. And as the plethora of frameworks and tools created to make development easier keeps growing, just like a kid at the candy store, the task of choosing the right tech stack becomes even harder. 

But the best solution to that is letting the problem you are trying to solve make the choices for you. In our case, we wanted to have faster development time and optimized performance. Even though it is often a compromise between the two, we have managed to create the right balance. The MERN stack, where we’ve switched out react for react-native has been the one best suited for our needs.

React native{https://reactnative.dev/} was the obvious choice for us because it is based on the JavaScript library that allows you to create a single javascript codebase that will work on different mobile devices (iOS, Android & Windows). Going for the all in one approach has many benefits like 

  •  It is a cost-effective solution
  • You can use the reusable code.
  • Easy access to plugins.
  • Rapid development
  • Ideal for prototyping

We are also using Nodejs{https://nodejs.org/en/} with express{https://expressjs.com/} to build our backend API. Although there are lots of node server frameworks out there, we choose express because it has simple routing and support for Connect middleware, allowing many extensions and useful features. Express is a minimal, open-source and flexible Node.js web app framework designed to make developing websites, web apps, & API’s much easier.

And for the CI/CD, we have chosen to use the GitLab-CI{https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/} tool to create our development pipeline. It has made continuous testing and integration of new features a lot easier and faster. And our NoSQL database will be stored in MongoDB Atlas{www.mongodb.com} cloud storage.

We have also added modern implementations such as Bank id + Facebook integration, custom chat integration, map, and contract.

Technologies used:

  • Docker
  • Kubernetes
  • Contentful
  • Swish

How is Sweetopia involved in the process Internship in Ethiopia?

Sweetopia is involved from the very beginning from design to implementation by consulting and working together. Their developers are well motivated and dedicated to answering any questions we have. 

We may not have used the latest technologies we are using now without the help of their developers’ consultancy.

How will interns benefit from our internship in Ethiopia program?

1. Experience & Skills

One of the golden benefits of going out in our Internships in Ethiopia is that Interns will gain the valuable experience needed right away from the hands of experts in the market.

Moreover, they get to refine, develop, and sharpen their skills, to easily adapt to new, modern changes within the community. Having such talented skills can never go unnoticed by big market players who are willing to hire such people. 

2. Network

As you get to experience the work surroundings, the people you meet and get to know increases, and this becomes a game-playing factor in the long run, as you may end up being a full-time job in no time at all. Additionally, the talented people you may have the opportunity to learn from as well as gain new information is almost invaluable.

On the other side, for companies who want to hire interns, they are also looking for something they can demonstrate. Such companies get advantages and benefits as does the intern.

A Larger Perspective

Employers will have the chance to build relationships with younger generations and get their insights on what are the modern trends they are missing. Such companies can have partnerships with colleges and universities to recruit talented students who might end up being future employers. Having interns can also increase productivity within the company while enhancing the social presence which will attract new customers. Employers also get to lead youngsters, which develops leadership skills within the company.

Good for startups

As a startup company, with low workforce and capacity, alongside financial constraints, hiring interns is the best option, since they can bring exposure and productivity to the work environment. Many interns are here to learn and gain new skill sets, and that is what small and medium business companies are looking for. 

In Ethiopia, there are many companies offering software solutions as their profession and relying heavily upon local human force, Ethiopian tech-savvy are looking for such opportunities, and that is where Addis Software PLC comes to the emergence, intending to raise the technical aspect of its community. 

How to be a part of our internship program?

Addis Software is home to developers and a place to learn and grow. We are still accepting internship papers, and regularly get and accept bulk internship applications.

Not just being a normal IT Company in Ethiopia, Addis Software provides a different experience to its employers and interns, with the concept of forging a better Ethiopian Tech community.

To get an internship(Internship in Ethiopia) opportunity and experience the work environment at Addis Software, all you have to do is contact us through Addis Software official website, submit your application and wait for an interview arranged.