
Dear friends!
We have long wanted to talk about the development of our payment system in order to share our experience. Finally, the time for continuous coding has passed and some time has come to structure the information. So, we tell how we made our product.
')
Payler was developed relatively in a short amount of time. We tried various process management methodologies, but in the realities of our team we follow some of our management systems.
Preamble: βWhat is Payler today?ββ Main product components: anti-fraud, gateway core, public and internal APIs, processing modules, merchant administrative interfaces, mobile clients, internal utilities;
β The product has been in place for several months, a certificate of compliance with PCI DSS has been received, the first clients have appeared;
β Used technologies: C #, Python, Ruby, MySQL, Redis, Angular.js etc .;
β Team:
β Backend: 3 developers who periodically switch between components;
β Frontend: 1 developer;
β Mobile: 2 developers - 1 iOS, 1 Android;
β System administrator.
And now we will tell more about the process of development itself.
1. Non-technical practicesFirst, we will talk about the practices that we have developed in terms of workflow organization, interaction between team members, performance evaluation, and so on.
Task tracking and documentation storageHistorically, Atlassian products have firmly established themselves in our company. We use the Jira + GreenHopper combination for tasks, and Confluence + sometimes Google Drive within a domain for files.
CycleFor this we use Kanban. Since the team has to change between tasks within components, as well as promptly release releases and bug fixes, this methodology is the best for us. We release critical bug fixes during the day, the rest are deployed deep at night or in the early morning when there is almost no transaction activity. New functionality is released about once a week or two.
RatingsThe development of a payment gateway depends on many factors, the main of which is interaction with banks and their processing centers. Therefore, it is generally difficult to give any temporary assessment of a particular task, however, where it is possible, for example, in mobile applications, administrative offices and so on, we still conduct it. In other cases, we try to focus on more important things.
RalliesWe carry out only if necessary within the framework of some kind of functionality. In other cases, we try to avoid.
Working timeWe do not track employee time. We have a relatively flexible schedule, but with one mandatory rule - the beginning of the working day no later than 11:00. The main thing is the fulfillment of the tasks set, so in this respect we have good conditions for those who can control themselves.
Mini teams1-2 people depending on the task. But this is now not enough, so we strive to build up the team based on 3-4 people in a mini-team.
2. Technical practicesHere we will talk about some of the practices that we use in our development in terms of technical tasks.
Pair programmingWe use in rare cases, again to solve complex problems. Two heads, two monitors.
Version controlLike many companies, we love Git and every new feature or fix bug we pour into a separate branch. The master reflects the release version, the development version reflects the changes for the day.
TestsWe (the developers) write the tests ourselves. For parts of the system written in C #, we started with TDD (XUnit), slowly moving towards BDD (SpecFlow etc.). We also have some tests in Python to test responses from the bank, API, as well as BDD (RSpec, Cucumber) for Ruby projects and unit tests for mobile client code. Now we are trying to implement the practice for the frontend on Angular.js, as well as strive for 70-80% coverage.
PS By the way, in Bryansk we really need server developers (C # / Java, Ruby / Python, Go), JavaScript developers, iOS developers. If you live here and are looking for work in these specialties - write us at hello@payler.com .Our next post will be devoted to the development of SMS gateway Billingrad, we will share our achievements. Any questions will be happy to answer in the comments.
With love,
Payler