Monday, April 11, 2016

The Value of Software Development Infrastructure

Software Development Infrastructure
Software Development Infrastructure

Preface

During the past few years, many tools came to software development environment. These days you can automate many processes to make free time for yourself. I want to share my story about improving the development infrastructure in my work.

Why did I start?

Before 2016, we use only Git for version controlling and Redmine for issue tracking. I had some shell scripts to do some jobs such as making release and deploying to servers. I knew there were many tools for running these scripts automatically but they were some problems:

  1. Nobody was responsible for preparing development infrastructure.
  2. I didn’t have any free time to create development infrastructure (I know it's not an excuse!).
  3. Nobody knew the real benefits of development infrastructure (in our company).
  4. The cloud development infrastructures are not available from Iran or for Iranians.

What did I choose?

I’ve researched and chose the following software to build a basic development infrastructure:

  1. Redmine (for issue tracking and workflows)
  2. Jenkins (for running tests and automating builds)
  3. Git (As version control system)
  4. SonarQube (for code quality)
  5. Artifactory (for dependencies)
  6. Active Directory, LDAP (for centralizing managing users)

Integrated Infrastructure

I’ve integrated all software with AD to make managing users easier. Now, we can create a user and set roles (e.g. sudoers, developer) very quickly.
Also, I’ve integrated other software:

  • Git to Redmine and Jenkins
  • Redmine to Jenkins (and vice verse)
  • Jenkins to Artifactory (After building a package successfully, it will be deployed to Artifactory automatically)
  • Jenkins to SonarQube (Check code quality to make a build successful or failure)


What did happen after new infrastructure

After running the new infrastructure, we've got many benefits from it. I couldn't imagine how useful that is.
Continuous Delivery - accesa.eu
Continuous Delivery

  1. The pace of development was increased and so we were agiler.
  2. Now we have complete continuous integration and continuous delivery cycles.
  3. Jenkins deploys latest production and development versions to servers.
  4. Jenkins installs jar files, java source code and java docs of our java modules to Artifactory. So, developers could get jar libraries easily and see modules source code inside IntelliJ IDEA.
  5. SonarQube checks code quality and makes a build failure if there wasn't unit test or code quality was bad.
  6. The administrator could create, edit or delete a user of the whole infrastructure just by some clicks.
  7. Artifactory download and cache all dependencies. So, we save the bandwidth and download them from the local maven repository.
All these advantages help us to save time, improve code qualities and maintain the software easier.

Conclusion

There is only one thing that I regret is postponing of building development infrastructure. If you still using old ways to test, build and deploy, you are doing it wrong. Put building development infrastructure at the top of your to-do list. Don't wait for free time, make your time free by building a development infrastructure.

4 comments:

  1. Nice Blog

    Telugu70mm.com Provides Latest Telugu Movie Reviews and other news like Telugu Movie News , Telugu Political News and Movie Released Dates

    ReplyDelete
  2. This is really great work. Thank you for sharing such a good and useful information here in the blog for students.
    harvard case study solutions

    ReplyDelete
  3. This site and the resources you provide is really nice keep it up.
    Project Management online Assistance

    ReplyDelete
  4. Website Design, Software Development, Mobile Apps, Bulk SMS, Domain Hosting company delivering innovative products and services to clients over India, Tamil Nadu, Krishnagiri Loginfotech

    ReplyDelete