The system is designed to centralize online sales of tickets for various events. The platform provides the following capabilities:
- To sell the tickets through the Internet. The website and clients for mobile platforms (iOS, Android, Windows Phone) are used to sale the tickets. The different payment methods are supported.
- Events administration. It is possible to fine-tune each event: a unique cost for each place/sector in the hall, a variety of options for discounts, change in arrangement/plan of the hall in which the event will be held, clubs/VIP-places, etc.
- Carrying out various promotions to increase sales.
- Controlling. The system has the possibility to organize the control of visitors to pass the event. Control is performed by scanning tickets. Various types of scanners – from professional barcode scanners to scanning tickets using an application installed on the mobile device – are supported.
- Reporting. Collecting various statistics and displaying it in the form of reports are supported. This allows to effectively manage ticket sales, promotions, etc.
- Supporting user roles. The system allows to provide the various access levels to the different users to ensure maximum safety.
There is a multi-language support. The legal and technical nuances of the use of the system in different countries are taken into account.
The system was designed and developed taking into account that the application server uses multicluster, cache servers, and multiple databases. Our engineers applied the architecture that allows to easily maintain the system and extend its functionality.
WildFly was used as application server. The application provides REST API services to access the application functionality. API was implemented using RESTEasy library. Data exchange between client and server is done in JSON format that allows to unify the API for all platforms. Requests received by REST-services, pass the access level check. Picketlink framework is responsible for this. Further the validation request using the Bean Validation API follows.
The application uses the API Facebook, Google, Vkontakte for registration/login via social networks.
Interaction with the database is carried out by means of Hibernate.
PostgreSQL is used as the database. The work with two databases goes on simultaneously. To reduce the access time to some data the distributed cache Infinispan was used while to speed up the search in some tables the technology for indexing databases (Apache SOLR) was used.
The application can generate reports on demand using Birt technology. Report generation is available in several formats: HTML, XLS, PDF. Standard logging subsystem WildFly is replaced by Logback in the application. Hawtio utility allows to collect and visualize information on the state of application and server.
The work on the project was divided into several phases. There were the analysis phase and several phases of development. At each phase of development the implementation of certain use cases was done.
In the analysis phase of the project the complete analysis of provided use cases has been produced, and all possible risks have been assessed and minimized. The most detailed estimation for all tasks was done and REST services signatures were created. Moreover, it was provided advisory assistance on improving the business logic and configuring the environment, optimization of its performance.
In phases of development all the necessary parts of back-end component functionality of the project have been completely implemented.
JazzTeam engineers compiled detailed technical documentation and applied Swagger framework to visualize documentation and system components for the best development team synchronization.
Java, EJB, JAX-RS/RestEasy, JPA/Hibernate, Picketlink, Wildfly (JBoss), PostgreSQL, Facebook/Google+/Vkontakte API, Eclipse BIRT, Hawtio, Swagger, TestNG, Logback, Quartz, Redmine, Microsoft Project.
- Support of multicluster (Wildfly and Infinspan servers);
- Support of multiple databases;
- Support of legacy-components of the previous version of the system;
- Performance optimization;
- Work with other third party teams (providing API, documentation, etc.).
- The intensive management work, we had to be very active, initiated solving suspended questions assigned to the other project teams.
- There were technological risks associated with the features of technologies selected by customer. For example, our team encountered problems with cache: the implementation of the architecture, which was designed by the customer architect could not be performed due to the limitation of technologies used on the project. We suggested the architectural solution that allowed to realize planned functionality, and even allowed to configure the cache more meticulously. We have proposed to use the local cache + remote one, instead of using only the remote cache. In the phase of cluster configuration, customers decided to opt out of the remote cache and use the local cache only.
- Our team implemented the back-end component of the project. We designed and implemented architecture of the server application, configured the interaction of all technologies, connected all third-party utilities. During development the REST services, that provides API for interaction between website, clients for mobile platforms and the server component of the system, were implemented. The integration with legacy modules of the system was also done.
- All source code we have created successfully reviewed and approved by the customer specialists.
- Developed application has passed load testing.
- The team coped with each of the phases tasks swimmingly and in due time. The team worked openly, clearly visualizing all arising difficulties and received achievements.
- Our team has well proved itself as multidisciplinary specialists, sometimes acting as the analyst, architect, and system administrator.
- The customer was satisfied with the quality of performed work and the working processes delivered by our team.
Company’s achievements during the project
- Our team worked proactively, often making suggestions to improve the project design and methods of implementation.
An example: we have proposed the implementation architecture of report system, which includes batch processing and message queue. This solution allowed to make the system more expandable, to support different types of reports, and easily add new types of reports. Also, this architecture has significantly optimized performance.
- Scrum/Agile processes were established. It allowed to work openly with customer and was of significant benefit to the project.
- The team has proved itself well in solving problems that have arisen due to the limitations in the technologies used.