This article initially provides an overview of open-source framework and tools that are leveraged as part of a transformation journey. This article initially provides a brief overview of open source tools and frameworks and then provides the advantages and disadvantages of such tools. Later it describes for various domains which are all the components and tools available in the market. This section also provides the tool of choice or the top tool that’s available from different alternatives that are available in today. These papers will assist various experts to understand different tools that are available and which tool can be leveraged in the context of the microservices architecture transformation journey.
Open Source Development
Separating the hype from reality isn’t easy when it comes to Open Source. Not only has it become the technological buzzword, but it has also become the epicentre of a great deal of controversy: from copyright laws and intellectual property debates to freedom of speech and arguments about free-market competition. The open-source market has evolved swiftly, first by going through a phase of consolidation and now by entering a phase of commoditization. This second phase has been driven largely by the fact that in order to show value, application server vendors can no longer rely on their core application server. This has created a market of value-added offerings, particularly in the area of development tools and development productivity. Many Open Source tools and frameworks listed in this paper are in this category.
Open Source is also changing the way programming is being studied in universities around the world; new generations of programmers leaving academia and entering the workplace have either used or contributed to Open Source. Students nowadays can learn by examining enterprise-level software that displays contributions from a great many sources from around the world.
At corporate IT departments worldwide, programmers are rallying behind Open Source projects like Ant, JUnit, Tomcat, and JBoss. Though the battle for the acceptance of Open Source has been largely fought at the level of the programmer and middle management, upper management, given the recent impact of Linux on corporations, is beginning to see the many advantages of Open Source, especially in the area of enterprise Java. Organizations seeking to reduce software development expenses have found that Open Source software (OSS) provides a lower cost of ownership when compared to commercial offerings, primarily because Open Source software is free, both in price and restrictions.
Many organizations are using Open Source projects to varying degrees in daily development. Some organizations use Open Source only during the development phases so that it doesn’t affect any production environment. These organizations might use Open Source for building, unit testing, or integrated development environments (IDE). Organizations may also use Open Source libraries as a form of reuse for activities such as logging and XML parsing. Open Source application servers and web containers can be leveraged to provide the infrastructure. Organizations using Open Source are discovering there are some compelling reasons for using Open Source besides the financial benefits. Unfortunately, these organizations are also discovering that there are some disadvantages as well.
The most obvious and compelling reason to use Open Source is the initial lower cost of ownership. Organizations are free to copy and distribute software to multiple developers and users. Consider an application with an installed base of 100 users and a 10-person development team using a $500 licensed commercial product. This would total $55,000 in expenses. With Open Source products the organization could immediately eliminate the large expense and increase the install base without incurring additional expenses. Other financial benefits can be realized as well. Because Open Source is free to copy, the expense of license management isn’t incurred. In addition, legal departments only have to review and approve an Open Source license once for all projects using that license rather than each time for each commercial product license. Using popular Open Source projects can reduce training expenses by providing a larger resource pool. Developers can be hired from outside the company with existing knowledge of Open Source frameworks. It’s often difficult to hire developers that have knowledge of a proprietary commercial framework. Industry support is another reason to consider Open Source. Many major companies such as IBM, Oracle, Microsoft, and SAP are using Open Source projects. These organizations have a vested interest in the project’s success because their products rely on the framework. Contributors to the Open Source projects aren’t necessarily the independent programmers writing code in their spare time anymore.
Many of these large companies have departments dedicated to Open Source. In addition, many of the Open Source projects such as Eclipse, NetBeans, and Tomcat were initially donated by large corporate backers. Consider the use of Open Source as a means of expanding your development team to include some of the best resources from all around the world. Access to the source is an important advantage of Open Source. The source code is the only 100% –accurate documentation. JavaDocs, marketing material, architectural diagrams, and instructions often aren’t kept up to date.
Open Source projects are more agile than commercial products in their evolution. Often Open Source projects have shorter release cycles than their commercial counterparts, if for no other reason than the fact that most projects provide nightly snapshots or direct access to the source code repository. In addition, organizations don’t have to wait for a vendor’s next release to get a bug fixed. Having source code provides a means for the organization to fix the bug itself. Organizations willing to contribute to Open Source projects can also have an influence on the future direction of the project. Unlike proprietary development, Open Source has the advantage of being reviewed and tested by potentially hundreds or thousands of users. Unit and regression testing is an important part of software quality. Open Source projects such as the Jakarta Commons project requires that JUnit tests be available and passed before version releases. Having access to JUnit tests can reduce risks by providing means of testing new releases against the unit tests of the currently utilized release. The results of the tests can be used as a risk management tool to determine the impact of an upgrade on a project. Open Source can contribute to an individual’s career development. Developers can use the source code to learn new techniques or APIs. Open Source can also lower the barriers of entry by allowing for more economical means of evaluating new technologies. For inexperienced Java developers, contributing to an Open Source project may be a way of demonstrating knowledge to an employer or potential employer. It’s common for developers to evaluate a technology and prototype proof-of-concept applications using an Open Source project as a development environment while deploying on a commercial platform for production use.
Open Source projects may have been documented poorly. In addition, Open Source software usually may not have a recognized company behind it to provide support, whether it’s free or paid for. These disadvantages are changing though. A new market has grown up around Open Source to provide quality documentation and support—for a price. In addition, many of the projects have active newsgroups or forums that can be effectively used to troubleshoot an Open Source application.
Open Source projects can also be plagued with backwards-compatibility problems. Open Source projects don’t take backward compatibility into consideration as much as commercial organizations. Yet, at the same time, Open Source projects tend to be more daring when it comes to innovation and trying radically different ways to approach a problem.
The biggest disadvantage of Open Source is the lack of marketing dollars. Often, organizations aren’t aware of the existence of an Open Source project or how it might apply. Open Source projects typically don’t have conference booths, magazine advertisements, or salespeople explaining the problems they can solve. Open Source projects also depend on the enthusiasm and number of collaborators as well as the areas that their efforts are focused on. For example, lack of documentation and administrative tools is a common complaint with regards to Open Source projects.
This brings to mind the successful emergence of Open Source projects with heavy commercial backers such as the Eclipse project, which is backed by IBM and thus has very good documentation given the resources available, namely, IBM staff technical writers and editors.
|#||Domain/Tier||Component||Tools/Framework Alternatives||Top – Framework/Tool||Software Vendor||Link|
|1||Infrastructure||Operating System||Centos, CoreOS, Alpine, ubuntu, Linux||Redhat Linux||Redhat||https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux|
|2||Virtualization||VMWare ESX, RedHat, Microsofft Hyer-V, Citrix Hypervisor, Nutanix Acropolis, IBM PowerVM||VMWare ESX||VMware||https://www.vmware.com/in/products/esxi-and-esx.html|
|3||Containerized Platform||Redhat OpenShift, MS Azure, AWS, IBM Cloud Private, Oracle Cloud||OpenShift||Redhat||https://www.openshift.com/|
|4||Cloud Infrastructure Management||IBM Cloud Automation Manager, OpenStack, Apache CloudStack, Eucalyptus cloud platform, Cloud Foundry||Apache CloudStack||Apache||https://cloudstack.apache.org/|
|5||Platform||Container Orchestration||Kubernetes, MESOS, Prometheus, Flocker, Mesosphere DC/OS, Helios||Kubernetes||https://cloud.google.com/kubernetes-engine/|
|6||Container||Docker, Rocket, OSv, Microsoft Containers, Solaris Containers||Docker||IBM||https://www.ibm.com/cloud/garage/content/course/containers-and-docker/2|
|7||Application Runtime||Open JDK, Oracle JDK, IBM JDK, Red Hat for Windows, AdoptOpenJDK||Open JDK||Oracle Corporation, Red Hat, IBM, Apple, SAP||https://www.oracle.com/technetwork/java/javase/community/opensourcejdk-jsp-136417.html|
|8||Application Web Container||Apache Tomcat, WebSphere Liberty, Wildfly, TomEE, Payara||Apache Tomcat||Apache||http://tomcat.apache.org/|
|9||Application||Microservices Realization Language||Java, Python, R, C#||Java||Oracle||https://www.oracle.com/in/java/|
|10||Microservices framework||Spring Boot, Spring Cloud, Java Liberty, Microprofile, Java EE, Angular UI/JS||Spring||Apache||https://spring.io/projects/spring-framework|
|11||Documentation||Swagger, Readme.io, Apiary, Gelato.io, Stoplight.io||Swagger||SmartBear Software||https://smartbear.com/news/news-releases/sponsorship-of-swagger/|
|12||Service Registration & Discovery||Eureka, Consul, Istio, Zookeeper, Etcd, DNS||Istio||Google, IBM, and Lyft||https://istio.io/docs/setup/kubernetes/|
|13||DevOps||Continous Planning||IBM Rational Team Concert, IBM Rational DOORS® Next Generation, Collaborative Lifecycle Management as a service (CLMaaS),JIRA, Kanboard.net, Confluence||JIRA||Atlassian||https://www.atlassian.com/software/jira|
|14||Continous Integration & Collaborative Development||Rational Collaboration Lifecycle Management, Rational Lifecycle Integration Adapter,, IBM Worklight Studio, IBM UrbanCode Build, Git, Jenkins, Gerrit, Bugzilla,Maven, Gradle||Jenkins||Jenkins||https://jenkins.io/|
|15||Continous Testing||Highly Available Test Chassis (HATC), Delphix (Database Virtualization), Selenium, JUnit, Cucumber, Selenium, JMeter, SOAP UI||Junit||Apache||https://ant.apache.org/manual/Tasks/junit.html|
|16||Continous Release & Deployment||IBM UrbanCode Deploy with Patterns, IBM UrbanCode Release, Chef, Puppet, Juju, Docker, Ansible, Salt||Ansible||Redhat||https://www.redhat.com/en/technologies/management/ansible|
|17||Configuration Management||Spring Cloud Config, Subversion, GIT, Apache ZooKeeper, etcd, Netflix archaius, Consul, JIRA||JIRA Insights||Atlassian||https://www.atlassian.com/software/jira|
|18||Continous Monitoring / Alerting||Graphite, Graphana, Collectd, AWS CloudWatch/Alarms, AppDynamics, NewRelic, SmartCloud Application Performance Management (APM), IBM Service Engage, Nagios, Nmon, Cacti, Logstash, Fluentd, New Relic,Prometheus, Nagios||Graphana||Apache||https://grafana.com/dashboards/3611|
|19||Continous Feedback & Optimization||IBM Tealeaf Customer Behavior Analysis, IBM Digital Analytics, Mobile First Quality Assurance, Open Web Analytics (OWA), Webalizer, W3Perl||Open Web Analytics (OWA)||Peter Adams||http://www.openwebanalytics.com/|
|20||Security||Application Security||Spring Cloud Security, HTTP Basic, OAuth2, JSON Web Tokens, Digital Certificates,Spring Security, Splunk||Spring||Apache||https://spring.io/projects/spring-framework|
|21||Data Security||SecureSphere WAF, SecureSphere Data Security, Oracle Advance Security, Elastic Search X-Pack||SecureSphere Data Security||Imperva||https://www.imperva.com/resources/resource-library/datasheets/securesphere-database-security/|
|22||IAM||Microsoft Forefront Identity Manager, Microsoft Active Directory, RSA SecurID, Microsoft PKI||Microsoft Forefront Identity Manager,||Microsoft||https://blogs.technet.microsoft.com/iamsupport/tag/forefront-identity-manager|
|23||Common||Logging||ELK Stack – Elastic Search, LogStash, Kibana, Splunk, Logly, SumoLogic, AWS CloudWatch/Logs, Logentries, IBM Cloud Log Analysis, Others, Nagios, Prometheus||Elasticsearch||Elastic NV||https://www.elastic.co/|
|24||Event Visualization||ELK Stack Logstash, Elastic Search, Kibana||Kibana||Apache||https://www.elastic.co/products/kibana|
|25||Assets & Accelerators||Microservices Generator – Microclimate, Spring Initializr, IBM Cloud Developer tools or IBM Cloud UI, Wildfly Swarm Project Generator, Liberty app accelerator||Microclimate||IBM||https://www.ibm.com|
|26||Search Engine||Elasticsearch, Apache Solr, Lucene, Sphinx, Xapian, Indri||Elasticsearch||Elastic NV||https://www.elastic.co/|
|27||Integration||Messaging Bus||Message Hub (on prem – not there), Confluent, Apache Kafka server. Supported in Spring Cloud Stream,RabbitMQ, Apache Qpid9, Red Hat Enterprise MRG, ActiveMQ, IBM MQ, IBM Integration Bus, IBM DataPower Gateway||Apache Kafka||Apache||https://kafka.apache.org/|
|28||API Gateway||Spring Cloud Gateway, API Connect, Tyk, Amazon AWS API Gateway, Kong, Express Gateway, API Manager||Spring||Apache||https://spring.io/projects/spring-framework|
|29||Orchestration||IBM Event Streams, Apache Flink, jBPM||jBPM||Redhat||https://developers.redhat.com/products/rhpam/overview/|
|30||Database||OLTP||PostgreSQL, MariaDB, SQLite, MySQL||PostgreSQL||PostgreSQL||https://www.postgresql.org/|
|31||ETL||JasperSoft ETL, Oracle ODI, Pentaho Kettle, CloverETL||JasperSoft ETL||TIBCO||https://www.jaspersoft.com/data-integration|
|32||Object Relationship Mapper||Hibernate, EclipseLink, Apache OpenJPA, Spring Data||Hibernate||Redhat||https://hibernate.org/|
|33||Real time Data Integration / Replication||Oracle Golden Gate, Oracle Data Guard, IBM InfoSphere, iWay Software, Microsoft SQL Server Integration Services, OpenText, Alooma, Confluent, SnapLogic||Confluent||Confluent||https://www.confluent.io/|
|34||BI and Dashboarding||BIRT, JasperReport Pentaho, SpagoBI, KNIME, ReportServer, Seal Report||JasperReport||TIBCO||https://community.jaspersoft.com/project/jasperreports-library|