Showing posts with label Definition. Show all posts
Showing posts with label Definition. Show all posts

Tuesday, 29 January 2013

What Is JNDI, SPI, CCI, LDAP And JCA?

JNDI stands for Java Naming and Directory Interface. It is an API to providing access to a directory service, that is, a service mapping name (strings) with objects, reference to remote objects or simple data. This is called binding. The set of bindings is called the context. Applications use the JNDI interface to access resources.

To put it very simply, it is like a hashmap with a String key and Object values representing resources on the web. Often, these resources are organized according to a hierarchy in directory services. Levels are defined with separators (for example '.' for DNS, ',' for LDAP). This is a naming convention. Each context has its naming convention.

SPI stands for Service Provider Interface. In other words, these are APIs for services. JNDI specifies a SPI to implement directory services. Objects stored in directories can have attributes (id and value). CRUD operations can be performed on these attributes.

Rather than providing a name, one can also search for objects according to their attributes, if the directory allows it. The information provided by user applications is called a search filter.

What Issues Does JNDI Solve?

Without JNDI, the location or access information of remote resources would have to be hard-coded in applications or made available in a configuration. Maintaining this information is quite tedious and error prone.

If a resources has been relocated on another server, with another IP address, for example, all applications using this resource would have to be updated with this new information. With JNDI, this is not necessary. Only the corresponding resource binding has to be updated. Applications can still access it with its name and the relocation is transparent.

Another common use is when applications are moved from a development environment, to a testing environment and finally to production. At each stage, one may want to use a different database for development, testing and production. In each context, one can make a different binding to each database. The application does not need to be udpated.

What is LDAP?

LDAP stands for Lightweight Directory Application Protocol. It is often used as a directory service in JNDI. Today, companies set LDAP server dedicated to responding to JNDI requests. A common use is to maintain a list of company employees, together with their emails and access credentials to miscellaneous application.

By centralizing this information, each application does not have to store multiple copies of employees information in their own databases, which is easier to maintain and less prone to errors and incoherencies.

What About JCA and CCI?

JCA stands for Java EE Connector Architecture. It is a Java technology helping application servers and their applications connect to other information systems, by providing them with connections to these. JCA defines its own SPI for the connector service. CCI stands for Common Client Interface. It is defined as part of JCA. It is the API user applications use to access JCA connection services.

JCA helps integrating information systems developed separately. Typically, instead of using JDBC to access databases, which is more or less equivalent to hard-coding configurations, a user application can use JCA to connect to these databases (or information systems). The JCA instance can be registered in the JDNI directory and retrieved by the user applications too.

What About Web Applications?

Typically, web applications run in containers called application servers. Web applications can create their own JNDI service to store objects, but they can also retrieve these from the container itself by using their corresponding name. In this case, the resource (often a database) is configured at the container level.

Thursday, 15 November 2012

Marketing: Explain TAM, SAM, and SOM?

When considering a market in marketing strategy, the TAM, SAM and SOM acronyms are often used.

TAM - Total Addressable Market

The total addressable market (often called total available market too) is an estimation of the total revenues which could realistically be served for a given product or service, regardless of competition or customer reachability. It is the maximum amount of revenues one can expect from a market if one had a monopolistic control over it.

For example, the ice-cream market in the U.S.: 10 billions per year.

This number can be computed from real numbers when these are publicly available. If you know the total number of units produced per year for a given item, and if you know its average price, you can compute a good estimation of the TAM.

If such information is not available, one can use a bottom-up estimation, by estimating the size of the population eating ice-cream, using demographic data, and compute the average price per item by combining the different brands' prices.

SAM - Serviceable Available Market

The serviceable available market is the part of the total addressable market a company can reasonably expect to reach considering its business model.

For example, an ice-cream company selling only in New-York City: 2,64% of TAM = 264 million per year, based on New York City versus U.S. population.

We can also think about the different flavors an ice-cream company can offer. Since such a company usually cannot offer all the flavors all the other ice-cream companies offer, this explains why the SAM is (almost always) smaller than the TAM.

SOM - Serviceable Obtainable Market

The serviceable obtainable market, also called share of market, is the part of the SAM revenues a competitor expects to grab from the market, considering the practical limitation of the implementation of their business model. It often is a projection of expectations.

For example, a New York City ice-cream company selling only in New York City cannot expect to sell all the ice-cream sold in New York City. Assuming they can sell from supermarkets and to restaurants, and that these channels represent 55% of all sales, and assuming they expect their brand to represent 40% of these sales, their SOM is 264 million * 55% * 40% = 58 millions.