Chamconekt is an open-source platform that connects microfinance institutions, payments systems, and people.Chamaconekt helps
you move money quickly and reliably using your prefered payment system between clients and microfinance institutions.
Chamaconekt has been built with a team of top technology and finance professionals.The company behind Chamaconekt open-source
platform is Chamaconekt Kenya Limited, a software based company in Kenya that helps connect people to low-cost financial services
to fight poverty.The platform has an intergrated approach where microfinance institutions can create mobile offices and branches
with a complete MIS to help them deal with clients.
Open source communities define the Financial Inclusion Ecosystem
The economics of proprietary technologies are less viable with increasingly complex systems that require constant adaptation,changes
and updates.Increasingly, proprietary software and systems are less robust than their open source equivalents.The Microfinance
ecosystem is representative of this new market reality.
Managing containers across distributed resources
Virtual machines can require large amounts of resources, especially when developing on older machines.Running hypervisors can lead to
stress on a system if resources are not allocated correctly, or without a user specifying that a certain amount should be used to
Efficiency is a primary issue with scaling clusters.Application latency is one outcome of high intensity workloads that don not scale
Chamaconekt-accounting service has been designed according to the International Financial Reporting Standard (IFRS) for Small and
Medium-sized Entities and only Microfinance Institutions who do not have public accountability, and are either required to prepare
general purpose financial statements in accordance with the IFRS for SMEs as issued in July 2009 (for example, under the law in
their jurisdictions) or choose to do so, to identify more easily the requirements of the IFRS for SMEs that are relevant to them.
Chamaconekt-accounts has been designed to manage accounts for clients and Microfinance Institutions that are using the Chamaconekt
Chamaconekt-chamas has been designed to provide an analysis of the cost of credit and returns on savings for Chamas(informal &
formal self-help groups) in Kenya.
Chamaconekt-commercial-banks has been designed to provide an analysis of the cost of credit and returns on savings for commercial
banks in Kenya.
Chamaconekt-core has been designed to act as a base layer for Chamaconekt.It provides the basic web user interface .
Chamaconekt-docs provides documentation for the microservices provided by Chamaconekt open-source platform.
Chamaconekt-favourites is designed to manage the clients, institutions and products that users of the Chamaconekt Platform like.
Chamaconekt-fines is designed to manage fines for clients and institutions.This is a way of raising funds for Chamas.These sort of
situations happen when people/clients are disciplined in order to raise funds.This service provides a mechanism in which these
situations can be handled.
Chamaconekt-insurance is a service that is designed to help the management of micro-insurance for Microfinance Institutions.
Chamaconekt-inventory is a service that helps Microfinance Institutions manage their Inventory.
Chamaconekt-invoicing is a service that helps Microfinance Institutions manage their invoicing process.
Chamaconekt-loans is a service that helps Microfinance Institutions manage loan products.
Chamaconekt-members is a service that helps Microfinance Institutions manage their clients.
Chamaconekt-microfinance-banks has been designed to provide an analysis of the cost of credit and returns on savings for
microfinance banks in Kenya.
Chamaconekt-payments is a service that helps Microfinance Institutions manage payments for their clients.
Chamaconekt-portfolio is a service that helps Microfinance Institutions manage an array of portfolios.
Chamaconekt-recommendation is a service that helps Microfinance Institutions to recommend products and related Microfinance
Institutions to users of the Chamaconekt Platform.
Chamaconekt-reports is a service that helps Microfinance Institutions to generate reports.
Chamaconekt-reviews is a service that helps Microfinance Institutions to do reviews to products and Microfinance Institutions.
Chamaconekt-saccos has been designed to provide an analysis of the cost of credit and returns on savings for both Saccos who
take customer deposits and not in Kenya.
Chamaconekt-savings is a service designed to manage savings for Microfinance Institutions.
Chamaconekt-shares is a service designed to manage shares for Microfinance Institutions.
Chamaconekt-voting is a service designed to manage the voting process of those informal Microfinance Institutions
From Monoliths to Microservices.
Most people outside of IT just don't get how difficult it is to manage complex enterprise systems.It is a deliberate balancing
act, one that rests on the understanding how any one change will affect the enite system.New developers spend months learning the
system's codebase before they can even bigin to work on it.Even the most knowledgeable of development teams is fearful of making
changes or adding new code that would disrupt operation in some unforeseen way.
When things go wrong, operations blames development and development blames QA.Project managers blame the budget and everyone else.
The business loses confidence in IT and begins to look for outsourcers to replace the internal team.
You have probably heard of how microservices can turn this scenario on its head, enabling a new, more agile world in which developers
and operations teams work hand in hand to deliver small,loosely coupled bundles of software quickly and safely.Instead of a single
monolithic system, functionality is carried out by a smaller set of servvices coordinating their operations.
Why we adopted Microservices
One common approach for teams adopting microservices is to identify existing functionality in the monolithic system that is both
non-critical and fairly loosely coupled with the rest of the application.
Chamaconekt leveraged a number of architectural patterns to build a solid microservices implementation strategy.In their book "The
Art of Scalibility," Martin Abbot and Michael Fisher elaborated on the concept of the "scale cube," illustrating various ways to
think about the use of microservices to more easily scale systems.This microservices pattern maps to the Y-axis of the cube, wherein
functional decomposition is used to scale the system.Each service can then be further scaled by cloning(x-axis) or sharding(Z-axis).
Alister Cockburn introduced the "ports and adapters" pattern, also called the hexagonal architecture , in the context of building
applications that can be tested in isolation.However, it has been increasingly used for building reusable microservices-based systems
.A hexagonal architecture is an implementation of a pattern called bounded context, wherein the capabilities related to a specific
business domain are insulated from any outside changes or effects.
Architectural & implementation considerations
Domain modeling is at the heart of designing coherent and loosely coupled microservices. The goal is to ensure that each of your
application's microservices are adequately isolated from runtime side effects of , and insulated from changes in the implementation of ,
the other microservices in the system.
Isolating and insulating micrservices also helps ensure their reusability.Proper domain modeling also helps avoid the pitfall of
modeling the system along technological or organizational boundaries, resulting in data services , business logic and presentation logic
each implemented as seperate services.
The concept fo microservices has been around for a long time but only recently has the term become mainstream in technology
discussion. If we back up a bit, in the old days we had very large and coupled applications that were difficult or impossible
to integrate with. Large single binaries, shipped with out applications, unable to work with other languages or platforms.
Then we introduced service oriented architecture (SOA) principles which promoted exposing this functionality over the wire via
HTTP or TCP which are common protocols. But still, these applications were very monlithic in nature, difficult to deploy, difficult
to rebuild and so forth.
Now enter microservices.
In order to minimize the brittleness of our services, we need to break them down into smaller units. This minimizes upstream dependency
issues, concerns with frequent deployments, language lock-in. In the world of true microservices you can assume that every endpoint
of a service would be deployed as it’s own service. For example, you may have one service that capitalizes a string, one that reverses
a string, and one that pluralizes a string. Typically you’d build an application and write three service endpoints that you’d deploy
together. Now these are all seperate decoupled services that depend on each other via common transport and protocol such as HTTP and JSON.
Typical languages and application stacks don’t really promote this type of architecture since they are monolithic themselves, and the
frameworks such as ASP.NET or Spring come with mostly prebuilt conventions of how you build larger n-tier style applications and services.
This is where Node.js really shines in regards to microservices.
At it’s core Node.js is an extremely light platform that’s driven by a passion community by open source modules. This modular system is
what allows you to build loosely coupled and scalable systems that talk over HTTP and JSON since these are built right into Node.js.
So this modular architecture goes nicely hand in hand with micrservices.
Think about deploying components rather than applications.
As you can imagine, maintaining a smaller component is much easier to do than a large service application. It’s easier to break up
the responsibility amongst engineers. It’s easier to rebuild or refactor a component and to convince the business of this. You also
have to coordinate at a much larger level with dependent teams since so many changes could be rolled out with a larger application
than a smaller component. I think you see the point I’m trying to make here.
Assuming you migrate 10 monolithic service applications to 100 independent micro services, you will run into some concerns. The primary
one is management of these 100 services. As an engineer, how do you manage them all running locally in development mode? How do you
ensure you’ve always got the latest versions locally? What about deploying to production and ensuring they’re all configured and
Containers to the rescue! Well, Docker.
Crossing the ocean with containers
When cloud computing first made its appearance, most people viewed it as a cost-reduction convenience.Soon, though many organizations
began to recognize its power to transform IT on a deeper level.Cloud offered a vision of infrastructure as a dynamic, adaptable resource
that IT could use to power 21st-century business imperatives for agility and responsiveness.
Containers are taking this transformation to the next level.Docker has captured the industry's imagination with breathtaking speed.
It began in similar fashion to cloud, seeming to provide a more convenient solution to existing packaging and deployment problems.In
reality, though containers point the way towards an even more profound mindset shift than cloud.
While cloud computing changed how we managed machines , it didn't change the basic things we managed.Containers,on the other hand,
promise a world that trancends our attachment to traditional servers and operating systems altogether.They truly shift the emphasis to
applictions and application components.One might claim that containers, in combination with microservvices software pattern, represent
the fruition of object-oriented, component-based vision for application architecture.
The world is programmable with containers
Docker and container technologies symbolize a new economic reality that puts the developer at the centre of the transformation from
big machines to application-driven systems. The shift from heavyweight and lightweight technologies,and from human to automated
systems, is apparent in the
If you haven’t been paying attention the last couple of years, Docker is a really awesome platform that allows you to configure and
run applications via application containers. This is a shift from virtual machines where each application needed to run on a full
operating system. With containers, you are sharing resources on the host operating system with proper security, file, networking
resources managed for you.
The awesome thing with Docker is the application stack you configure and run locally is the exact same that you can run in production.
Repeat, the exact same configuration locally as in production.
So how does this pertain to microservices and Node.js? Docker now becomes your platform to configure and manage all of these
applications. They are configured and provisioned all together and you can essentially script out this process to make provisioning a
complete microservices stack locally with one click.
It’s an exciting time to be an engineer. Configuring, Building, Testing and Deploying applications is entering a new age and it’s
really going to be awesome.
One thing to keep in mind is this is a big architecture shift. It’s not easy as just breaking down your services, calling them a
microservice and calling it a day. There is additional work that goes into ensuring you properly manage these smaller components but
the benefits are going to outweight the cons once you get it right. Your infrastructure will operate at higher efficiency, your
engineers will be happy and you get to break down the silos.
This is why we believe the future of banking is here.
THE FUTURE OF BANKING IS HERE
Services for the underbanked
FINANCE WITH A MISSION
With a team of top technology and finance professionals , Chamaconekt Kenya is a software based company in Kenya that
connects people to low-cost financial services to fight poverty and develop individual potential.
Software has bugs, or maybe you have an idea for a change in Chamaconekt-core.
- Do a search of issues in case there is one already tracking the one you ran into.
- Search open issues (not addressed yet) using the filter is open (default).If you have new information, include it
in the issue.
- Search closed issues by removing the is open filter.Two possibilities here:
The issues was resolved in a newer version.Then you just need to install the version with the fix.
The issue was closed for some reason.You may decide to reopen it depending on context.Make sure to explain why the
issue should should be re-opened.
For bugs being opened/re-opened. Simply paste and fill the Bug-Template.md into the issue.