Table of Contents |
---|
Introduction
...
No. | Exception Guideline | Description |
---|---|---|
1 | Exceptions should not create additional package dependencies | Assume that a client class in package A accesses a class in package B. The class in package B should not throw an exception that belongs to package C (which is used by package B). This produces dependencies between package A and C. |
2 | Exceptions by package. | If a package's classes throw any exceptions, the package should have its own top-level checked exception. The package should then define exception subclasses for any exceptions that may be handled differently by clients. Good models for this paradigm can be found in the Java packages java.io, java.sql and javax.naming. |
3 | No blind catches of Exception | A class is responsible for knowing what exceptions it may encounter, and it must treat each exception individually. If the handling of many exceptions is identical, it could be extracted into helper methods. |
4 | No empty catch-blocks | At the very least, a catch-block should contain an assertion that it should never be reached or a comment stating that it is irrelevant |
5 | Write sensible throws clauses | Fewer (<3) the number of exceptions thrown, better it is. Always throw exceptions that make sense to the calling class, if not wrap that exception in another, which more closely captures the error type |
6 | Chaining Exceptions | Always chain exceptions so that the root cause of the error is available for logging it into the error/system log file. This is very useful for diagnosing errors in production environment |
7 | Use Message Catalogs for easy localization | Use message catalogs for message text of an exception, whose message is directly presented to the end user. This will help the application to be localized or internationalized by just adding another message catalog |
...
All information pertaining to the data can be found at the Data Architecture page of the ReCAP Technical Guide.
Non-
...
Functional Expectations
Scalability
This section explains how the architecture aims to achieve scalability.
...
Online Availability Target : 99.9%
Fail Over: The goal of fail-over is to allow work that would normally be done by one server to be done by another server should the regular one fail. For example, Server A responds to all requests unless it has a hardware failure, or someone trips over its network cable, or the data center it is located in burns to the ground. And if Server A cannot respond to requests, then Server B can take over. Or if we simply need a service to be highly available, fail-over allows you to perform maintenance on individual servers (nodes) without taking your service off-line.
Load Balancing: Load balancing lets you spread load over multiple servers. You would want to do this if you were maxing out your CPU or disk IO or network capacity on a particular server. Alternatives to load balancing include 'scaling' vertically. e.g. getting faster or better hardware such as quicker disks, a faster CPU or a fatter network pipe.
Backup and Recovery: In general, backup and recovery refers to the various strategies and procedures involved in protecting your database against data loss and reconstructing the database after any kind of data loss.
- Physical Backups and Logical Backups
- Errors and Failures Requiring Recovery from Backup
...
No. | Name | Purpose |
1 | IntelliJ 16.x | Eclipse is a multi-language software development environment comprising a base workspace(Eclipse Public License (EPL)) |
2 | MySQL 5.7 | Open source relational database management system (RDBMS) that runs as a server providing multi-user access to a number of databases (GNU General Public License) |
3 | Tomcat 7.0 | Apache Tomcat is an open source web server which provides pure Java HTTP web server environment for Java code to run. (Apache License) |
4 | Apache SOLR 6.x | SOLR is an open source enterprise search platform written in Java and runs as a standalone full-text search server within a servlet container.(Apache License) |
5 | Docker | Containerized solution for quick deployments and application run time environment. |
6 | AWS | Deployment environment. |
7 | Jenkins | Jenkins is a server-based system running in a servlet container providing open source continuous integration features.( Massachusetts Institute of Technology (MIT) License) |
8 | JUnit 4 | JUnit is a unit testing framework for the Java Programming language (Common Public License) |
9 | SOAP UI 4.5.1 | SoapUI is an open source web service testing application for service-oriented architectures (SOA) and provides functionalities like web service inspection, invoking, development, simulation and mocking, functional testing, load and compliance testing (GNU Lesser General Public License (LGPL)) |
10 | Gradle | Gradle is a build automation tool used primarily for Java projects |
11 | Java Platforms (Java 7) | Java is a set of several computer software products and specifications that together provide a system for developing application software and deploying it in a cross-platform computing environment (Freeware) |
...