Who should read it: It is for you if you are looking for a quick overview of this topic for a project, to conduct/appear in an interview, or in general. As we learn more, we will update this article.
Below are some technology/framework terms and basic definitions:
Customer Data Platform: As per CDP institute, Customer Data Platform is a packaged software that creates a persistent, unified customer database that is accessible to other systems. CDP is usually controlled by business users. It makes it different from data ware houses or data lakes, that are set-up by corporate IT teams. CDP creates a comprehensive view of each customer by capturing data from multiple sources. It tracks customer behavior over time. Data stored in CDP can be used for analysis and to manage customer interactions. There are different types of CDPs like Data CDPs, Analytics CDPs, Campaign CDPs, and Delivery CDPs.
Difference between CDP and CRM (Customer Relationship Management):
- CRMs maintain the customer interactions. CDP maintains the 360 degree view of the customer behavior for the used products.
- CRM data is gathered manually via the service/support/other customer specific interactions. CDP data is usually collected automatically using integrations and code snippets.
- CRMs are to improve interactions with the customers. CDPs are for understanding customers and their behavior.
Segment IO: Segment is a CDP service that looks after data governance, data integration, and audience management at once place.
Optimizely: Optimizely is a technology company that provides multiple options to support A/B testing experiments.
Split IO: It allows the feature delivery for the apps. By using split IO, a feature can be enabled or disabled. It can also use A/B testing.
Elasticsearch: It is an open source, search and analytics engine. It is accessible using RESTful web services and stores data in JSON format. It is developed in Java, which makes it compatible with other platforms.
Splunk: Splunk is a software platform widely used for monitoring, searching, analyzing, visualizing machine generated data. It offers real-time visibility of data into a dashboard. It is best suited to understand the root-causes.
Distributed tracing: It is also known as distributed request tracing. This is a method that is used to monitor applications, especially built around micro services architecture. IT and DevOps teams use it to monitor applications.
Open Tracing: Open tracing is a vendor agnostic API to achieve distributed tracing. These APIs are build to support many languages.
API Gateways: Just like servers support web applications, API gateways support APIs. There are many proxy servers in front of the API to support various features like authentication, rate limiting, routing, load balancing, etc. API gateways are integral parts of microservices, nanoservices, and serveless components.
Benefits of API gateways:
- Decoupling: API gateway allows you to decouple the public facing endpoint APIs from the underlying implementation.
- Reduce round trips: If some APIs need to join data across other services, an API gateway can save round trips.
- Security: API gateways provide centralized services like authentication, CORS, rate limiting, bot detection, etc.
- Cross cutting concerns: API gateways can provide a way to centrally plan the logging, caching, and other cross cutting concerns.
Distributed caching: There are two common technologies for distributed caching: redis and memcached.
- Redis: It is an open source in-memory remote database that uses disk space for the data storage.
- Memcached: It is also an open source in-memory database.
- Redis versus Memchached:
- Both are no-SQL storage types that store key-vaue pairs.
- Both are open-source databases.
- Redis supports more data types. Memchached support string types.
MuleSoft: Mule ESB (Enterprise Service Bus) is a highly scalable Java-based enterprise service bus and integration platform provided by MuleSoft. It has two concepts: Bus and Adapter. The concept of Bus is achieved through a messaging server like JMS or AMQP. By using Bus, applications decouple from one another. The concept of Adapter is responsible to convert application specific backend data into the Bus format. Data from one application to another is exchanged using the bus format, which is a consistent message format.
Micro services: Micro service architecture is the strategy to implement independent services for a larger application. It is becoming a way to build APIs.
Solr: Solr is a search server which is an open source, Java-based information retrieval library.
Serverless: It is a cloud based code execution model in that cloud providers deal with the servers. A developer is not needed to work on server infrastructure. Cloud providers provide a way to pay per use model, to execute the serverless components. That way, there is no idle cost. Using serverless components features no hassle of maintaining an psychical machines, easy to scale, cost efficient, easy to maintain, and easy to deploy. Testing a serverless component is challenging because it is not easy to replicate the environment for the testing needs. There are two types of serverless components: BaaS (Backend as a Service) and FaaS (Frontend as a Service).
In 1990s, if a developer had to deploy an application into production, he/she had to plan to servers, networking, databases, and all related end to end solutions, to deploy a solution. In 2000s, we had virtual machines, to build the infrastructure. In 2008, Amazon released EC2 instances that made things more easier. But with EC2, we had to maintain servers. We still had to take care of OS and other elements. S3 and SQS also helped further. But now, we can use cloud infrastructure without worrying anything about server infrastructures. AWS lambda providers a great way. A serverless application involves multiple microservices. With serverless, scaling down is also easy.
URL Shortner: URL shortner is a service to create short links from very long URLs. Converting URLs to a short URL makes it easy to share, tweet, and for other purposes. Clicking on a short URL redirects the user browser to the original URL. Below are some ways to convert a URL to a short URL:
- Hash original URLs with a hash function (like MD5 or SHA-2).
- Generate short links using UUID.
- Convert numbers from base 10 to base 62.
gRPC: gRPC is a newer approach for RPC (Remote Procedure Protocol). It is an open source technology. It is a method to execute a procedure on a remote server. gRPC added a concept of protocol buffers (also known as protbufs). It can run on any platform and supported by many programming languages.
GraphQL: With GraphQL, client determines which data, in which format, and how the client wants it. By default, it typically sends the smallest possible request.
Webhooks: It’s an HTTP POST request that is triggered when an event occurs. It updates the client when there is an update. Webhooks provide instant, real-time notifications.
Common Java Libraries:
- Lombok API: Lombok API helps minimize boilerplate code. It reduces the line of code. To minimize the lines of code, it provides annotations. Below are some of the annotations:
- Getter & Setter
- No Arg Constructor
- All Arg Constructor
- Resilience4j: It is an API designed for functional programming. It provides options to pick and choose what’s needed. For more details, read here. It was inspired by Hystrix. Hystrix helps in distributed services by adding latency tolerance and fault tolerance logic.
- AspectJ: AspectJ is a programming paradigm that increases the modularity by allowing the separation of concerns. For more, read here.
- Swagger: Swagger is a set of open source tools built around Open source API specification. Open API specification ( also known as Swagger specification) is an API specification for REST APIs.
- javatuples: javatuples is a Java API that allows Java programs to work with tuples. A tuple is a sequence of elements that are not related to each other. For example, it can contain an integer, string, and an object. Tuples can only contain specific number of elements. All elements are type safe.
- JDK, ASM, Javassist, and CGlib: These four are APIs to generate Java proxy classes. JDK dynamic proxy is easiest to use. CGLib and javassist are advanced libraries to generate byte codes.
- p6spy: p6spy is a dynamic monitoring framework for database operations.
- Spring Cloud: It provides options to manage Spring applications on the cloud infrastructure.
- Redis implementation example with Spring boot: https://javatechonline.com/how-to-implement-redis-cache-in-spring-boot-application/#What_can_you_expect_from_this_Article
- Redis versus Memcached: https://www.instaclustr.com/blog/redis-vs-memcached