jump to navigation

Time to move on. April 12, 2010

Posted by Terry.Cho in Life.
3 comments
Today James Golsing announced “It is time to move on.”
I say “me too..” I also leave Oracle and move to other company.
I started Java programming from 1998 and made one of most popular java community in Korea and i was vice president of Java Community Organization in Korea. Also i attended on a lot of conference for java technology and write a lot of java articles in magazine. Finally i am java mentor among Korea Java Developers

So it is hard to make a decision to leave Oracle because as i mentioned above, my background based on Java Expert. (As you can see, my blog URL is javamaster… ) I will move to other technical area and have to learn the new technology. It can be burden for me.. (But interesting challenge)

The good reason for the moving  is i want to be a architect who can draw architecture without technical & product dependency. The new job will give me a more broad technical background.  It is “do more harm than good” for bad reason like Gosling.

Apache Cassandra Quick tour March 22, 2010

Posted by Terry.Cho in Distributed System.
Tags: , , , , ,
11 comments

Cassandra is distributed database system. It is donated to Apache open source group by Facebook at 2008.The Cassandra is based on Google Big Table data model and Facebook Dynamo distributed architecture. It doesn’t use SQL and optimized to high scale size of data & transaction handling. Even though Cassandra is implemented with Java language, other language can use the Cassandra as a client. (It supports Ruby,Perl,Python,Scala,PHP etc).

It is used to High Scale Size SNS like Face book,Digg,Twitter etc. It doesn’t support complex relationship like Foreign Key. It just provides Key & Value relationship like Java Hashmap. It is very easy to install and use.

Let’s look at data model of Cassandra

Data Model

Cassandra is based on google big table data model. It is called “Column DB”. It is totally different from traditional RDBMS.

Column

Column data structure which consists of column name and column value.

{name: emailAddress, value:cassandra@apache.org}
{name:age , value:20}

Column Family

Column family is set of columns. It is similar to row in RDBMS table. I will explain more detail about difference between Column Family and row in RDBMS later. Column Family has a key which identify each row in data set. Each row has a number of Columns.

For example, one row is

Cassandra = { emailAddress:casandra@apache.org , age:20}

“Cassandra” is key for the row, and the row has two columns. Keys of the columns are “emailAddress” and “age”. Each column value is “casandra@apache.org” and “20″.

Let’s look at Column Family which has a number of rows.

UserProfile={
Cassandra={ emailAddress:”casandra@apache.org” , age:”20”}
TerryCho= { emailAddress:”terry.cho@apache.org” , gender:”male”}
Cath= { emailAddress:”cath@apache.org” , age:”20”,gender:”female”,address:”Seoul”}
}

One of interest thing is each row can have different scheme. Cassandra row has “emailAddress” ,”age” column. TerryCho row has “emailAddress”,”gender” column. This characteristic is called as “Schemeless” (Data structure of each row in column family can be different)

KeySpace

Keyspace is logical set of column family for management perspective. It doesn’t impact data structure.

Super Column & Super Column Family

As I mentioned earlier, column value can have a column itself. (Similar to Java Hashtable can have ValueObject class as a ‘Object’ type)

{name:”username”
value: firstname{name:”firstname”,value=”Terry”}
value: lastname{name:”lastname”,value=”Cho”}
}

As a same way column family also can have column family like this

UserList={
Cath:{
username:{firstname:”Cath”,lastname:”Yoon”}
address:{city:”Seoul”,postcode:”1234”}
}
Terry:{
username:{firstname:”Terry”,lastname:”Cho”}
account:{bank:”hana”,accounted:”1234”}
}
}

UserList column family has two rows with key “Cath” and “Terry”. Each of the “Carry” and “Terry” row  has two column families – “Cath” row has “username” and “address’ column family, “Terry” row has “username” and “account” column family.

Cassandra Quick Test

Download Cassandra from http://incubator.apache.org/cassandra/ Extract zip file and run bin/cassandra.bat

We will connect Cassandra node with CLI interface. It is located in /bin/cassandra-cli.bat

The default TCP port number is 9160. You can change the port number in “conf/storage-conf.xml”

In “/conf/storage-conf.xml” file, default key space with name “Keyspace1” is defined. Column family type of the Keyspace is like this

Let’s put a new row with key name “Terry” which has Column (key=”gender”, value=”Male”)

Replication architecture in Cassandra and HBase March 19, 2010

Posted by Terry.Cho in Distributed System.
Tags: , , , ,
2 comments
Now i’m research distributed database architecture.
I found a very interesting article.
http://www.roadtofailure.com/2009/10/29/hbase-vs-cassandra-nosql-battle/comment-page-1/
Apache Cassandra and Hadoop Hbase are most popular distributed database.
Twitter and Facebook are using Cassandra.
These solution is started from Google Big Table. So the data model is very similar.
The data model is called “Column database”. I will introduce the model later.
However my concern is how to replicate data across region (data centers in different region)
Here is very interesting information.
In case of Cassandra, it replicates data in every transaction. A coordinator captures changes and propagate it to other nodes.
But fiber based low latency network is required and there are no reference yet.
HBase data replication architecture looks very practical.
It captures change log and put it into replication queue. The replication message is passed to other nodes.
This mechanism is very similar to CDC (Change Data Capture).
Oracle Goden Gate, Quest Share Flex, MySQL geo replication are using this mechanism.

HBase replication looks more reasonable. It has common architecture and they have a reference.

===

After i had written this article, i got a feed back. Followed by the comment the article which i referenced is written by  fan of Hbase. Cassandra supports geo replication and has reference in face book. And Digg will deploy Cassandra in different data center.

But as i know even if facebook has two data center, they have fiber-link between the center. It is not a real geo replication. I will more research about cassandra data replication feature and re-post about this issue later.

ENTERPRISE 2.0 BY ANDREW McAFEE December 2, 2009

Posted by Terry.Cho in Enterprise 2.0.
Tags: , ,
add a comment

I’m reading the book “ENTERPRISE 2.0 BY ANDREW McAFEE”. I am a previewer in some Korean publishing company. They sometimes ask me about what book deserved to translated to Korean.

Yesterday i got the book for a preview. Actually i was waiting for the book. Andrew Mcafee is professor in Havard business school who is one of most famous people in E2.0 world.

As i thought the book looks great, it introduced case study and reason why we need E2.0 and introduction of E2.0 , success strategy etc.

I’m reading this book with excitement.

Advanced REST November 13, 2009

Posted by Terry.Cho in Uncategorized.
Tags: ,
add a comment

The basic concepts of REST were covered in Chapter 1. Still REST can be implemented in a more advanced version if utilizing the merits of HTTP.I would like to explain about the advanced REST in this Chapter with an example by using http://www.infoq.com/articles/subbu-allamaraju-rest .Let’s assume that the business scenario is making an account transfer from a bank.

1. Implementing an account transfer scenario through internet banking

STEP 1. Log-in to the internet banking system.

STEP 2. View the list of accounts of the relevant user through user ID.

http://bank.org/accounts?findby=7t676323a

200 OK
Content-Type: application/xml;charset=UTF-8
<accounts xmlns=”urn:org:bank:accounts”>
<account>
<id>AZA12093</id>
<customer-id>7t676323a</customer-id>
<balance currency=”USD”>993.95</balance>
</account>
<account>
<id>ADK31242</id>
<customer-id>7t676323a</customer-id>
<balance currency=”USD”>534.62</balance>
</account>
</accounts>

Regarding user ID 7t76323a, the two accounts of AZA12093 and ADK31242 will be returned along with the balance in those accounts. As the user made inquiry on each account number, the details of each account will be http://bank.org/account/AZA12093

http://bank.org/account/ADK31242

STEP 3. To see the business scenario of making account transfer,

POST /transfers
Host: bank.org
Content-Type: application/xml;charset=UTF-8

<transfer xmlns=”urn:org:bank:accounts”>
<from>account:AZA12093</from>
<to>account:ADK31242</to>
<amount currency=”USD”>100</amount>
<note>RESTing</note>
</transfer>

100 USD is transferred from AZA12093 to ADK31242 through HTTP post. Upon a successful account transfer, the following result value will be returned.

201 Created
Content-Type: application/xml;charset=UTF-8
<transfer xmlns=”urn:org:bank:accounts”>
<from>account:AZA12093</from>
<to>account:ADK31242</to>
<id>transfer:XTA8763</id>
<amount currency=”USD”>100</amount>
<note>RESTing</note>
</transfer>

In this case, take careful note that the return value is not HTTP 200 but HTTP 201. As the account transfer takes place not immediately but afterwards through async, HTTP 201 Created (meaning that the account transfer request has been received) as well as Transfer Application No XTA8763 are returned.

STEP 4. To check the account transfer details after one day,

http://bank.org/check/XTA8763
GET /check/XTA8763
Host: bank.org
200 OK
Content-Type: application/xml;charset=UTF-8
<status xmlns=”urn:org:bank:accounts”>
<code>01</code>
<message xml:lang=”en”>Pending</message>
</status>

The relevant account transfer request is indicated in a pending status.

2. Implementing an account transfer scenario through internet banking using the advanced REST

At a glance, it seems like an advanced and well-developed REST, but actually cannot be called as a successful architecture with the real merits of REST incorporated.

REST should have the following features:

First, REST should be able to identify the resource by using URL.

Second, REST should be able to represent various approaches toward the resource by using many functions of the HTTP protocol – especially the HTTP Header. For example, the Message Exchange Pattern of Sync/Async type (Call Back using the correlation ID) as well as the Meta Data like ‘Last Update Time’ to use web cache should be defined in the HTTP Header. Also the input and output data format should be defined based on the contents type.

Third, REST should be able to represent the relation between resources or the status information of the current resource through a link.

Based on such features of REST, let’s develop the previously-created account transfer scenario again.

STEP 1. Log-in to the internet banking system.

STEP 2. View the list of accounts of the relevant user through user ID.

200 OK
Content-Type: application/vnd.bank.org.account+xml;charset=UTF-8
<accounts xmlns=”urn:org:bank:accounts”>
<account>
<id>AZA12093</id>
<link href=”http://bank.org/account/AZA12093″ rel=”self”/>
<link rel=”http://bank.org/rel/transfer edit”  type=”application/vnd.bank.org.transfer+xml”  href=”http://bank.org/transfers”/>
<link rel=”http://bank.org/rel/customer”
type=”application/vnd.bank.org.customer+xml”
href=”http://bank.org/customer/7t676323a”/>
<balance currency=”USD”>993.95</balance>
</account>
<account>
<id>ADK31242</id>
<link href=”http://bank.org/account/ADK31242″ rel=”self”/>
<link rel=”http://bank.org/rel/transfer”
type=”application/vnd.bank.org.transfer+xml”
href=”http://bank.org/transfers”/>
<link rel=”http://bank.org/rel/customer”
type=”application/vnd.bank.org.customer+xml”
href=”http://bank.org/customer/7t676323a”/>
<balance currency=”USD”>534.62</balance>
</account>
</accounts>

As explained above, a slightly different type of return value will appear. What to check first is the content-type. : application/vnd.bank.org.account+xml; the return type of content-type will be returned. First, +xml mean that the format of this document is xml. vnd.bank.org.account defines the structure of returned data. (One of the weak points of REST – undefined data type – can be resolved by assigning an ID to the unique name of XML schedule used as an input or output)

Another change is that the LINK part has been added. This LINK indicates how the status of the current resource can change and what kind of URL can be used for status change. Also, it can indicate the relations with another relevant resource and define the data type, which is returned upon calling, as content-type. If the data type and the relation with another resource are defined in the returned message, user will be able to understand how to use and the relation of the resource without referring to a separately defined service. Therefore such feature of REST is called a ‘self-descriptive message’.

<account>
<id>ADK31242</id>
<link href=”http://bank.org/account/ADK31242″ rel=”self” type=”application/vnd.bank.org.account+xml”/>
<link rel=”http://bank.org/rel/transfer”
type=”application/vnd.bank.org.transfer+xml”
href=”http://bank.org/transfers”/>
<link rel=”http://bank.org/rel/customer”
type=”application/vnd.bank.org.customer+xml”
href=”http://bank.org/customer/7t676323a”/>
<balance currency=”USD”>534.62</balance>

In this case, there are 3 types of changes: Self, http://bank.org/rel/transfer and http://bank.org/rel/customer

Firstly http://bank.org/rel/transfer, which is an account, defines the relation with a “transferable account”. To make account transfer, send through http://bank.org/transfers URL and the return value will become application/vnd.bank.org.transfer+xml.

Secondly self indicates a more detailed information of the account itself. It can be inquired through http://bank.org/account/ADK31242 and the returned data type will be application/vnd.bank.org.account+xml.

Thirdly http://bank.org/rel/customer indicates the client information. It can be inquired through http://bank.org/customer/7t676323a and the returned data type will be application/vnd.bank.org.customer+xml.

STEP 3. Execute account transfer.

Send the following data to the URL that has been returned from STEP 2.

POST /transfers
Host: bank.org
Content-Type: application/vnd.bank.org.transfer+xml;charset=UTF-8
<transfer xmlns=”urn:org:bank:accounts”>
<from>account:AZA12093</from>
<to>account:ADK31242</to>
<amount currency=”USD”>100</amount>
<note>RESTing</note>
</transfer>

The return value is as follows.

201 Created
Content-Type: application/vnd.bank.org.transfer+xml;charset=UTF-8
<transfer xmlns=”urn:org:bank:accounts”>
<link rel=”self” href=”http://bank.org/transfer/XTA8763″/>
<link rel=”http://bank.org/rel/transfer/from”type=”application/vnd.bank.org.account+xml”href=”http://bank.org/account/AZA12093″/>
<link rel=”http://bank.org/rel/transfer/to” type=”application/vnd.bank.org.account+xml” href=”http://bank.org/account/ADK31242″/>
<link rel=”http://bank.org/rel/transfer/status” type=”application/vnd.bank.org.status+xml” href=”http://bank.org/check/XTA8763″/>
<id>transfer:XTA8763</id>
<amount currency=”USD”>100</amount>
<note>RESTing</note>
</transfer>

STEP 4. Check the status of the account transfer progress.

The status of the account transfer progress can be checked by using http://bank.org/check/XTA8763 which has been returned from STEP 3.

Conclusion

From this article, I tried to focus on defining the data types by using the content-type of HTTP as well as the relations between resources by using a link. Yet I haven’t found the “perfect” standardized design even though there are many REST related articles that embrace similar philosophies.

Of course, as shown in the aforementioned examples, the in/out data format can be defined based on the content-type. Although the out (return) data format can be defined based on the defined types in the link, still the input aren’t defined. Also according to other designs, there are ways to define the data type by defining the URL of the real XML scheme in the URL of XML namespace.

From a protocol point of view, a link can be used by defining the relations between resources. This approach sounds preferable but actually can create various constraints during the actual implementation.

This article only presents a mere example of REST design in a more advanced version by utilizing HTTP more efficiently. However, more considerations are required for a more practical REST design.

=======

Comment

Please kindly consider that this article covering the advanced style of REST design is yet an uncompleted version and needs to be supplemented with more feedback. I will try to introduce the advanced style – especially regarding LINK and data type – with more details next time. In my following article, you will be able to learn about how REST is actually implemented in JAVA.

REST Architecture overview November 12, 2009

Posted by Terry.Cho in Uncategorized.
Tags: , , ,
1 comment so far

REST Architecture

REST was introduced in 2000 from a thesis written by Roy Fielding, one of the founders of web (HTTP). As the current architecture wasn’t able to make full use of the superiority of the original web design, the Representational Safe Transfer (REST) was introduced as a network-based architecture that could best utilize the merits of web.

Basics of REST

Simply put, REST is a HTTP URI + HTTP Method, which clearly states the target resource through URL and defines the operations of such relevant resource through Method.

Resource

One of the key features of REST is representing all resources as ‘Resource’. This Resource is expressed through HTTP URL. For example, a user named ‘bcho’ from a javastudy website can be expressed as http://www.javastudy.co.kr/users/bcho while a HP printing machine located at the 9th floor of a Gangnam office can be expressed as http://printers/localtion/seoul/kangnamgu/9f/hp. In this way, all resources can be expressed through HTTP URL.

Action

Then how are the operations of the relevant resource represented? In this case, HTTP Method is utilized.

*  In order to bring the member information of bcho from a javastudy website,
URI : http://www.javastudy.co.kr/users/bcho
Method : GET

* Also in order to create the relevant member,
URI : http://www.javastudy.co.kr/users/bcho
Method : POST
PayLoad
<payload>
<name>Cho Dae Hyup</name>
:
</payload>

*  In order to delete the relevant member,
URI : http://www.javastudy.co.kr/users/bcho
Method : DELETE

*  In order to change the information of the relevant member,
URI : http://www.javastudy.co.kr/users/bcho
Method : PUT
PayLoad
<payload>
<name>Cho Dae Hyup</name>
:
</payload>

* In other words, the 4 Methods from the HTTP Protocol define CRUD of the Resource.

HTTP Method Meaning
POST Create
GET Select
PUT Create or Update
DELETE Delete

Shortcomings of REST

However, there are several shortcomings such as the number of available Methods is only 4. For example, Methods like ‘send email’ or ‘log write’ cannot clearly be expressed through HTTP Method.

As the existing programming style has taken an operation-oriented approach centered on functions or Methods, those methods conflict with the resource-based approaches that REST embraces. The reason for REST being called as architecture rather than a simple protocol is that it can be appropriately applied to resources that have CRUD (ex. DBMS).

Then how can these shortcomings be resolved?

As a matter of fact, CRUD is not enough to express all operations. To express operations with control or functional features, HTTP/PUT or POST Method is used or a functional approach is required. For example, a ‘send mail’ operation can be changed into a meaning of ‘create a mail to send it to someone’ through HTTP/POSThttp://www.xxx./sendmail/to/{emailaddress}.

Still, there are cases that cannot change the meaning of the context.

In these cases, HTTP/PUT or URL is used to grant the meaning of control. The grade of user ID bcho can be changed through the following.

For example, http://www.xxx/users/bcho/upgrade

In fact, the most difficult challenge in designing a REST-based architecture is how to define this URL. One of the merits of REST is that it is quite easy to grasp the meanings through this URL or HTTP Method. Therefore, much effort is required in defining the URL.

Pros & Cons

Pros

The existing web infrastructure can be utilized in tact.

This is one of the largest advantages. As the existing HTTP is used as it is, there is no need to break a firewall when making a remote calling and the load balancer equipment like L4 can be used in tact.

The exciting thing is that the web cache can be used as it is. Because every resource is expressed uniquely through URL, it can be stored within the web cache and especially operations that are selective can be returned by this cache without going through actual business transactions. Such features are strongly beneficial from performance and resource utilization perspectives.

Easy

Compared with the web service, which encompasses so many cumbersome SPECs like WS*-I, WS Reliable Messaging, WS Transaction, REST doesn’t need a separate SPEC. Generally REST is called as a ‘Defactor standard’, which only requires proper use of HTTP URL and Method.

Cons

No standard and, therefore, hard to manage

The reason that REST is drawing much public attention these days is because non enterprise companies like Google, Yahoo and Amazon are eyeing away from the complexity and difficult standards of web service. As the meanings of data don’t sound like mission critical business requirements, a standard that is easy enough to exchange data transactions would be satisfactory and doesn’t need to be at an enterprise-level. Also there is no company like vendors that wants to take the lead in creating a standard.

There are only standard-looking ones that are used frequently and being created tacitly. (These are called as ‘Defactor standard’.)

As the standards are ambiguous, it becomes a problem in managing them during development. Considering that a clear-cut standard paves the way for a development process or pattern to be created in accordance with several SPECs, a proprietary standard of REST should first be established and used to design a REST-based system. However, in some cases, a misunderstanding on the REST concept can place a REST flag on the wrong architecture. In fact, Flickr.com – a leading runner of WEB 2.0 – once evoked a controversy around REST architecture by putting the name, ‘hybrid REST’ on the API that was designed in a RPC style without internalizing the REST features.

Note. When Flickr’s Hybrid Rest processes a certain operation,

Methods are handed over to query string in the form of http://URL/operation?name=operationname. At a glance, this looks like a RESTful design. But actually the URL for every resource is the same and the operations are simply divided by query string. This goes against the original design principle of REST, which grants a unique URL to every resource.

However, it is worrisome that many local people misunderstand such kind of design as REST and some portals actually offer this kind of services.

As mentioned-above shortly, REST is not a protocol like web service. It is architecture. Because it is a resource-based architecture, system should be designed suitable to the REST concept.

Use of Alternative Key

For example, resource is usually represented by one row from the DB. In the case of DB, primary keys exist in the format of complex keys. (Multiple columns are combined to become one PK, in this case) Although this can be a valid design for the DB, HTTP URL has a hierarchical structure according to / and, therefore, such representation becomes unnatural.

For example, if the PK of DB is defined as “residence registration # of the householder” + “region” + “name,” there is no problem expressing like such in the DB. But this way of definition becomes unnatural (having a strange meaning) when being expressed in REST because it would look like userinfo/{ residence registration # of the householder }/{ region }/{ name}.

In addition, there are many problems in assigning a unique key to a resource and one way to resolve this problem is to use an alternative key (AK). In this case, a unique key with no meaning acts like a key and be used in a field called ‘AK’ within the DB table. Already Google’s REST adopted an architecture using such kind of AK.

However, adding an AK field to the DB means the overall DB design needs to be changed. If this is the case, an architectural approach is required when using REST because the architecture of the overall system must be changed for REST.

Other options to make a RESTful design can include 1) techniques that express the relations between resources through href (link), 2) versioning method, 3) naming rule, 4) cross cutting concern transaction by using ESB, 5) routing, etc. The architecture design method and highly-advanced REST will be covered in the next contribution, titled ‘Highly-Advanced REST Architecture’.

Misunderstanding on REST

REST = HTTP + XML Protocol?

I once proposed to have a discussion on REST at one local community web site on the grounds of designing a highly-advanced REST system for the project. Then, I became to realize that most people simply understood REST as something sending an XML by using HTTP.

Never

REST is an architecture that expresses the resource by best-utilizing the web features. (It is not a protocol) And of course, it must use HTTP. However, XML is not mandatory. It is still ok to use other languages like JSON or YAML. Depending on how well the resource is represented and the web features are utilized determine a correct understanding on the REST architecture concept.

The reason why I am writing this paper is because there is no document that explains the REST concept or principle well enough.

Is REST easier than WebService?

Not exactly. Of course, REST would be much easier than Web Service if being developed from scratch. Because creating a proprietary standard, designing a message with a simple XML, and simply sending that message through HTTP would be required only. However this is looking from a service provider prospective. For those who actually use this service, any XML or JSON data being returned upon request to the HTTP client need to be parsed one by one.

What about web service? Thanks to its clear-cut standard, a web service will be created automatically once the coding takes place based on POJO or JAX-WS. Especially the client stub can be created automatically through WSDL according to the given service contract. For this reason, even though users don’t know the protocol spec at all, web service can be easily utilized as if calling and using a java library.

From my opinion, it looks easier to develop a web service rather than REST. The simplest and the most productive option is a WS-I based web service that is simple enough and well arranged.

Prospect of REST

Not much demand for REST exists in Korea yet. Maybe this is because of users trying to avoid designing highly complicated system or maybe because not much demand has been created for an open-style system.

However already prestigious overseas web sites are offering services under a REST-based architecture. Amazon, one of the representative open API companies is planning to do a REST-based migration on the open APIs previously developed with web service. Although REST is a defector standard, it is known as a difficult standard, which is unavoidable in the web world.

In addition, REST rising from the open side is about to be included in the next JEE6 version as being added as a JAX-RS (JSR311), one of J2EE Specs. (For an open source, REST is included in Apache CXF and a framework called ‘Jersey’ of Sun. Even though REST is translated into a specification, it would be a specification about ‘how’ to implement and still its flexibility will stay unchanged.) A specification called, ‘WADL’ which is similar to ‘WSDL’ of web service has been released as a standard for REST. However, ‘WADL’ only indicates URLs for REST service and yet representing the schema of every message within the actual operations. For this reason, it is right to say that there is no standardized service contract for REST yet, and it is difficult to judge that whether this would serve as an advance or disadvantage in the future.

Conclusion

For its advantage of simplicity and maximum utilization of web features, REST is being spread out surprisingly in the overseas region. As a rare technology developed from the open side, REST has even been adopted as a standard technology (JSR-311).

Still, due to its strong flexibility, REST cannot be controlled or managed easily and, for this reason, hasn’t yet been widely used in the Enterprise System but instead being mostly used for service system. Due to a lack of understanding on the REST concept in Korea as well as inactivated open API, REST is not a popular option yet.

However, it is time for local developers to make preparation for using REST as this concept is becoming main-stream among prestigious international service companies.

In the next contribution, a more sophisticated REST architecture will be covered.

Enterprise 2.0-Part1/2:Intro and architecture October 27, 2009

Posted by Terry.Cho in Enterprise 2.0.
Tags: , ,
add a comment

4’Th wave

After current enterprise model has been built, requirement of employee from company has been changing. There were two dramatic changes – Industry revolution, Information revolution.

In 18 century the industry revolution was begun from England. It is represented by mass production. Well-defined process makes employee to be parts of the big process. Individual capability, creativity and personality are not important. Company wants employee to work with same capability as a part. It enables the company to predict their output.

After the industry revolution, 3r’d wave came. It is information revolution. IT technology brings efficiency to a company and also breaks a wall from regional restriction. Employee has to work in global and smart enough to adopt complex IT system.

So what is next wave? We are fronted in 4’Th wave. It is WEB2.0.

In 2006 Times announced “A person of year”. It was “YOU!!”. In former times user just consumed information with traditional media (News paper, Television etc) . With growth of internet, the user gets a powerful bidirectional tool that is internet. The user can produce information and share it with other users by using internet.  The consumer has been prosumer (produce and consume information). They collaborate in Wikipedia or open source project. They also suggest idea or give a feed back to company. They begin to make new value by using internet. It is WEB 2.0.

Key point of this 4’Th wave is “Open” and “Participation”. This is now being applied enterprise. Employees share their knowledge with their blog and wiki. They are discussing in internet forum. They are searching information that is required their business from internet. Employee starts to generate new value by themselves for their business. It breaks traditional vertical communication structure. Employee communicates across their business unit and across vertical organization structure.  Finally enterprise wants employee to be creative and collaborative to make a new value.

Here is summary of expectation to employee from enterprise.

Changes Requirement for employee
2nd wave Industrial revolution Mass production.

Processed enabled business

Parts of mess process.
3rd wave Informational revolution High efficiency.
Information is product.

Global business

Efficient and globalized

Smart enough to use complex IT system.

4’Th wave WEB 2.0 Open and participation.
Occurrence of pro-sumer
Creative and collaborative

Networked

WEB2.0

So what is WEB2.0? WEB2.0 is based on Web with internet. It is hard to define with some word. It is just paradigm not a technology. We can summarize characteristics like this.

User creates contents and share or sell : User creates contents and uploads it to YouTube, Flicker etc. And share the contents with other users. The content is not only produced by mess media.

Establish connection between people :Users manage their human network with SNS (Social Networking Service) like Face book and expand the network.

Generate a new value by collaboration :By using virtual collaboration space (WEB), users create new value. One of most famous collaboration example is Wikipedia. A lot of users post their knowledge. It is biggest dictionary in the world. Some developer contributes open source project like apache project. They makes software product.

Sharing information : User generated contents are existing in internet. It is shared to other users and is reused by the users.

Enhanced information approach and categorization : Traditionally approach to information is exact based search like google. But the approach is hard to find right information that I want. Rank based social book mark, micro blog like twitter, Tag cloud enables us to find right information more easily. Lots of recommended contents means it has high value.

Extension with open platform (Mash-up) :One of interesting characteristics of WEB2.0 is OPEN-API. WEB2.0 exposes their functionalities thru OPEN-API. So user can compose the OPEN-API and generate new value. For example user can mash-up Google Map & Restaurant information web site.

Communication with various way with various new tools :Communication is very important factor for collaboration and human network management. WEB2.0 provides new & innovative tool. Instance messaging based 1:1 synchronous communication. Video conferencing over different regions. Twitter based 1:anonymous users communication. In addition mobile removes time and location restriction.

ŸCan use anywhere and anytime with mobile device :In year 2009 there are many smart phone & mobile platform. Apple IPhone, Rim blackberry, Google Android etc. This mobile platform has very rich & speedy user interface. And network speed is highly increased. As a result mobile environment has been changed. Many WEB2.0 applications are supporting the mobile platform. It makes us to free from place and time restriction.

ŸEnhanced rich user interface :Traditional www user interface is image and text based static web. But from WEB2.0 the user interface is enriched with AJAX,FLEX etc. The interface looks like desktop application. It is pretty and comfortable. Indeed it leverage usability of WEB2.0 applications.

WEB2.0 has many other characteristics. But in this article, focus is how to apply WEB2.0 to enterprise. So I just close the WEB2.0 introduction here.

Enterprise 2.0

As I explained WEB2.0 has a lot of advantages. Beginning of Enterprise 2.0 is started from here. “How to apply the profit of WEB2.0 to enterprise?” Enterprise version of WEB2.0 is Enterprise 2.0

4C Model

To apply the profit we have to research WEB2.0 spheres. Here is example scenario

①     William wants to know a person who can help William to design Enterprise2.0 concept.
②     William find Johns by searching twitter with “#E20” tag.
③     William sent twitter message to Johns to ask some help.
④     Johns reply the message and they have a communications. But the communication gets more complex and need more conversation. They change their communication tools to Google Talk (Messenger)
⑤     William gets enough information. And William and Johns wants to discuss more about enterprise 2.0. So they open a thread in internet forum with “enterprise2.0” title.
⑥     William posts the news that the forum is opened in twitter and blog.
⑦     Many people know that there is a forum by twitter and blog search.
⑧     Many discussions are occurred in the forum.
⑨     William thinks that they can draw enterprise 2.0 architecture. So he opened Wiki page to collaboration.
⑩     Members of the forum post enterprise 2.0 architecture on the Wiki and the contents is matured.
⑪     The document is matured enough. William released the document in his blog. The posting is notified by twitter and blog trackback. Indeed many users internet share the information.

This is formal scenario of WEB2.0 usage. Let’s analysis this scenario.

In activity 1,2 William found Johns by using WEB2.0 tool. It is “Connection”. The Connection means that finding right people or right contents in internet.

In activity 3~6 William communicated with many people about enterprise 2.0. It is “Communication” Twitter ,Forum ,Instance messenger are good example of the communication.

And William opened Wiki to make enterprise 2.0 architecture. It is “Collaboration” As a result William made enterprise 2.0 contents. It is “Contents”. The content is value that is generated by collaboration.

These Connection, Communication, Collaboration and Contents are 4 main factor of WEB2.0. I call these 4 components as “4C” and interaction of the 4C is “4C model[1]”. Each component of the 4C model has own value. It communicates with each other and generates value.

e20_4cmodel

Let’s summarize this 4C model.

Connection Finding right person and right information
Communication Communicate with people
Collaboration To generate value, co-work with other people
Contents Store value in www

Enterprise 2.0 Architecture

Based on 4C model, we can define Enterprise 2.0 system reference architecture. Here is the reference architecture

e20_architecture

Each 4C model have realized component.

Connection component in the model has tools for connection. For example Microblog like twitter can be good tools for reaching a people. Search engine and Tag cloud helps people to reach the right information.

Communication component also has a lot of software tools. Instance Messengers for synchronous & 1:1 communication. Forum can be used to communicate with 1:N for specific issues. Micro blog also can be used in Communication for 1:Anonymous & Asynchronous communication.

In Collaboration area there are many new software. Wiki and Team blog is most traditional things. Nowday many vendors provides new collaboration tools like workspace (similar as group ware. It contains team wiki, team forum, dashboard and email integration, group management etc.)

Contents components commonly stores contents and share the contents with others.

These are example of 4C component software. In addition we need infrastructure to provide better service.

First, Enterprise portal. Each software that I mentioned above is silo system. It means each software has own user interface & ACL system. So to provide integrated view to end user. We need User Interface integration Layer. It is portal. It integrates user interface with Portlet, Clipping etc. In addition it provides single sign on features & ACL, Entitlement etc.

Even if the portal supports ACL and entitlement it is just for integrated layer. Something has to handle all of user identification information and more integrated authentication & authorization. It is covered by Identity Management System. It is IDM.

To provide freedom from location and time constraint, enterprise 2.0 need to support mobile device. There is many ways like WAP based portal. On device client etc. From 2008 Smartphone is rapidly developed and used (RIM/Blackberry, Apple/IPhone,Google/Android etc). Before that the mobile based interface was just WAP. But after we get a mobile platform & 3G network (Fast & support IP address) Mobile interface has been enhanced a lot. As a result it provides very rich and great mobile application infrastructures to us.

A reason why WEB2.0 is spread is it has a Rich user interface. The interface looks similar like desktop application. It is enabled by RIA technologies like AJAX and Flex etc. In the same way of WEB2.0, enterprise 2.0 also has to have Rich user interface.

In next article, i will introduce about strategy for enterprise 2.0.


[1] In year 2008 Niall cook announced another 4C Model(Collaboration ,Connection ,Communication ,Cooperation) in his book “Enterprise 2.0” but the concept and approach are different

Micro blog(Twitter) in enterprise #3-Implementation Strategies September 29, 2009

Posted by Terry.Cho in Enterprise 2.0, Micro blog.
Tags: , , , ,
add a comment

Enterprise Micro blog architecture

Here is enterprise micro blog architecture. I already described common micro blog architecture. Here I describes additional features for enterprise version of micro blog.

enterprise_microblog

Figure 2 Micro blog architecture for enterprise

User Interface

Micro blog support multi type of user interfaces.

(1)    Web interface
Most traditional common interface. It running on web browser in desktop.
(2)    Mobile device
Mobile phone or PDA. Depends on service country and device type service interfaces are different. 3G phone supports mobile application. 2G or 1G phone just support SMS and MMS. To support mobile device platform and interface type should be defined before designing architecture
(3)    Portal
Company has a enterprise portal (EP). To integrate micro blog with EP. JSR-160,WSRP(Remote Portlet spec) is used.
(4)    IM (Instant Messenger)
Sending a message to micro blog by messenger. Receive a micro blog message from messenger.
(5)    Other enterprise applications
Micro blog makes synergy by integrating with legacy enterprise system. For example notification of work flow (Like expense workflow process notification) is replaced with micro blog instead of email

IDM (Identity Management System)

Company has organization structure(Tree) and employee profile. We call it as IDM (Identity management system). Enterprise micro blog uses this user id. So the enterprise micro blog has connectivity for integration of enterprise IDM system. It also supports Single Sign On. (SSO)

Mobile gateway

Enterprise micro blog requires mobile gateway. Especially in case of global company mobile gateway is different in countries. Because career vendor’s integration style is different.

Enterprise search engine and social analyze tool

As I mentioned earlier messages in micro blog enables us to share knowledge. For sharing knowledge search is required. Company commonly has their enterprise search engine. Employee can search in micro blog system. But if the enterprise search combines message in micro blog. It leverages information sharing between employees.

In addition trend that is generated by analyzing message is important for risk management. This trend is reported by social analyze tool

Policy & Compliance Rule

Micro blog in enterprise has to solve security issue. In enterprise some group requires closed communication. For example discussion in HR team should not be opened outside of the team. Because promotion or expiration information is very sensitive to employee.

And to publish internal message to external micro blog (Twitter) It needs filtering based on company security & compliance rule.

(1)    Selective publishing

Filtering message when publish internal micro blog messages to external micro blog system. It automatically warn when prohibited keyword is detected during external publishing

(2)    Multilevel access & grouping

Support closed group communication.

Challenge in enterprise micro blog

Changing culture

Introduction of micro blog is not an introducing system but a change internal communication culture. Change communication style from vertical & closed to horizontal & opened. It can be faced on resistance from stakeholders

Security Issue

Message in micro blog can be confidential information.

If company try to use internal & external micro blog. Publishing is controlled by policy

In addition before deploying enterprise micro blog system legal issue should be reviewed. For example SOX law in US let company to store communication law 7 years. This kind of legal issue should be applied in the system architecture.

Implementation

Micro blog is quite new in enterprise. So product is not matured.

And requirements of WEB2.0 application in enterprise is different. Because it is not a formal business system. It is totally related with company culture. So customization issue is different in company.

Before choosing enterprise micro blog solution, customization should be considered.

Implementation strategy

From now I introduced use case of enterprise micro blog and overall architecture. But achieving benefit of enterprise micro blog is not so easy. It requires cultural changes. It is long journey. And people is getting smart during project is going with lesson learned. Indeed I recommend step-by-step approach.

Step 1. Implement basic micro blog system

Install basic micro blog system Integrate with legacy user profile system and messaging system (mobile,email,im integration)

Step 2. Revitialization

In this step convince stakeholders. Change a communication culture step by step. Pull value of micro blog system. After finishing this step enterprise micro blog is culture in the company. And many information is archived in the system.

Step 3. extension

Integrate with other system to make synergy.For example, enterprise search + relationship based search. Trend analysis ,Crisis monitoring

Step 4. Develop new model

Based on enterprise biz characteristics, develop new micro blog model

For example. With LBS(Location Based Service) construction company check up health of employee and represent it as status.  If a employee has a accident, management team quickly meet it.

Micro blog(Twitter) in enterprise #2-Usecase of micro blog in enterprise September 28, 2009

Posted by Terry.Cho in Enterprise 2.0, Micro blog.
Tags: , , ,
2 comments

Strategy of micro blog in enterprise

We understand how many values micro blog system has (In previous article). So what can we do in enterprise? Can we bring the potential of the system into efficiency of enterprise? Here is strategy

Micro blog for collaboration framework in enterprise

What can we do with micro blog in enterprise? There are use cases about internal use of micro blog system.

Develop personal brand.

Messages in micro blog are related to quality of personal brand. Message of expertise category or progress of work makes people know about the writer’s quality. Company uses this personal brand to optimize efficiency of their organization and let the company selects appropriate people for their work objective.

Aware risk quickly

By analyzing RT and hash tags in micro blog, company aware trend and risk. Field employee becomes aware risk most quickly. Analyzing trend let manager know that “Many employees think the problem can be risky. Many other people agree about that by RT etc.” It makes company find risk quickly and prepare the risk.

Make connection to expert

In huge company it is hard to find person who has an experience or knowledge about a problem. To find the people, employee asks to their manager with formal process. (face to face meeting or writing email.) The manager tries to find the people by asking another people etc. It takes a lot of time. And hard to find appropriate people.

In micro blog system, employee finds a people with hash tag search. And measure his expertise with history of his message in micro blog. If he is suitable to the job. Employee can ask a help by posting message in micro blog. This work is done in micro blog in a few minute. But it takes long time in traditional enterprise communication style.

Share knowledge

People saved link of useful information in micro blog. Qualified or useful information are re posted (RT) by others.  People can search information by searching the link with tag and recognized what contents is useful (How many copied by others? How many favorite by others?)

It is different style of search. Traditional enterprise search is based on accuracy. But this search mechanism is based on relationship and reputation. Many recommended information is more useful.

Share business context

Person who is newly joined a new job or project cannot understand project status, issue etc. It needs education and time to understand context. Message in micro blog represents status and emotion of employee. Employee’s message history means history of his work. So other people understand context – “What had been going on?” “What had been happened?” “What issue was ?”

Raise relationship and develop trust

Message in micro blog is not formal form but casual form. It expresses emotional things and status. Reader can understand what he is thinking and give a comment to his current status. It leverages communication between employees. Indeed it strengthens relationships.

In structured organization it is hard to communicate with higher level manager from employee. In Micro blog system employee subscribe higher level (CXX Level) message and can understand about him, communicate with him. It helps employee reduce gap from organization.

Horizontal and opened communication

Traditionally enterprise has structured organization. Communication is established by the organization structure. It has a lot of stack. The stack makes communication burden.

As a result communication time is increased and some idea is not reached to the stake holders.

Communication in micro blog blows away this gap. Micro blog is 1:N communication. Employee can post message and get a feedback from whoever who has interest in. It changed communication style from traditional vertical style to horizontal and opened style.

Opened communication is objectives what every company want to achieve.  It reduces communication time and share idea easily without organization wall.

Near Real Time communication

With mobile device support and async communication basics micro blog supports near real time communication without place & time restriction.

Micro blog in enterprise for external communication

So what about external communication tools for enterprise with micro blog? Already many company uses twitter.com for their marketing purpose. For example Amazon.com posted their news to twitter first not a formal media (News paper etc)

Marketing

Provide product information and event information.

Communicate with Customer.

Company analyze customer trend by analyzing twitter message. Get a feedback about their service and product.

CEO of Doosan group uses Twitter.com very well.

Here is episode about company marketing.  One of customer’s children wants to get a Doosan excavator model.  The customer simply post his thinking to Twitter and shared with CEO of Doosan. So he really sent Doosan excavator model to the customer.

This episode was posted many blogs and re-tweeted many time. As a result Doosan can advertise name value of company and their excavator  with just one excavator model price and without any marketing budget, any agency.

doosan

There can be many other usage of micro blog for external communication in enterprise. But this document focus on internal usage of micro blog enterprise. So I will not mention about external communication with micro blog anymore.

In next article i will introduce enterprise micro blog adoption strategy. (Architecture, Challenges, Implementation process)

Micro blog(Twitter) in Enterprise #1 September 28, 2009

Posted by Terry.Cho in Enterprise 2.0, Micro blog.
Tags: , , , , ,
1 comment so far

Micro blog in enterprise – #1

(Analyze common micro blog system)

Terry.Cho (byungwook.cho AT ORACLE DOT COM)

Most famous micro blog Twitter.com started service from 2006. And now number of monthly visitors exceeds 182 billion people. It impacted 2008 US election and Iran election. This article analyzes micro blog service in WEB 2.0 sphere and suggests strategy to adopt micro blog to enterprise.

Micro blog

Definition

Micro blog is very simple 1:N communication system. Microblogging allows people to send brief text updates to stay abreast of activities within a group by receiving frequent published updates, typically of 140 characters or less. Basic mechanism of micro blog is author post short message and other user subscribe the message by “Following” the author. This is difference with other messaging system. In case of email and IM, author choice subscriber. But in micro blog,  subscriber choice author. So message written by author is not for specific people but for anonymous. It also has filtering mechanism. For example micro blog commonly use “Hashtag”. Author post message with this hashtag. So the other user can search message which he has interest in with this hash tag like keyword.

What do people do with micro blog?

Why people use micro blog. We have to consider this. Followed by report from “Consumer Internet Barometer” (TNS and The conference Board. 2009/Q2) 41.6% of user uses micro blog for communicating with friend. 29.1% users for updating current status. 25.8% users for searching news and information.

f1

Figure 1.Why people use twitter? (Source:“Consumer Internet Barometer” from TNS and The Conference Board”)

This means 70% of users are using twitter for managing personal network. Human network management and communication are main purpose. It is emotional perspective object not a reasonable perspective.

Here are some scenario about effect of micro blog.

Message in twitter has the other value. It is about “What I am thinking about? What is my status?” It can be a information to others. For example a user has interest in WEB2.0. He will write a message with external link for the information with hash tag. He will gather the information If another user want to get a WEB2.0 information. He will search WEB2.0 in twitter. The search results provides external link about WEB2.0. One of interest thing is if some information is useful (external link) many other user saved link. It shows quality of search result.

If a user wants to find expert ,he can search people who wrote message related in the issue. And then review his history. “What he did”, “What his interest” by doing this the user can find expert. Finally send message to the expert and can make a relationship with the expert.

The other usage of micro blog is by analyzing hash tag or re-tweet we can aware trend. Many announce tags and re-tweeted message means many people have interest in the issue.

Twitter is very simple communication tool. Just posting message and subscribe. But as I mentioned above its potential is very high. It is a reason why people is raving in twitter.

Success factor of twitter

Even though we already have alternative messaging solution like email, phone, IM, why micro blog is getting popular? Here are reasons.

Easy to use

In emai,l to send a message “start email client” à “Log in” à “Write button” à “Select receiver” à “Write title” à “Write mail” à “Press send”

In micro blog “launch micro blog client” à “automatically login” à “write message” & enter or in your mobile phone “write message” à “press send”. It is very simple and very easy to use.

Can use anywhere anytime

One reason of popularity of micro blog is free from place and time. Mobile device enables this. User can post and read status anywhere anytime by using mobile device. Furthermore smart phone provides rich user interface like desktop application. User posts status with photo with smart phone. It enriches quality of message. Message length constraint of mobile device and asynchronous messaging of mobile text message goes well to micro blog.

Near real time

Message of micro blog is 140 text characters and with mobile support it is free from place and time. So user can update the status frequently and the content is real time. For example airplane crash news in Hudson River in US was happened in 2009. User takes photo with mobile phone and post a message on Twitter. The other user re tweet this message. The news is spread very quickly. Formal medias (Newspaper, TV) news are beyond twitter.

twitter-hudson-airplane-crash-picture-0

Photo posted in Twitter with Hudson plane crash news by citizen

Support Open API

As I mentioned above, micro blog is very simple system but has a lot of potential. Open API exposes this potential to outside and makes a value. By mashing up micro blog with other WEB2.0 applications new value is generated.

By using Twitter Open API TweetStats.com and HashTags.com analyze RT & HashTag and make a trend report. It is a case of re-use of information in Twitter with Open API.

Summary

We have reviewed success factors of micro blog. Even if it is very simple system it has a little difference in communication. Basically it is 1:N asynchronous communication with short message. That is free from place and time restriction. It expresses current status and emotions with near real time. Sometimes it doesn’t have any specific objectives. But the twit message can be useful information to others.

Here is summary table about difference with other communication tools.

table

Common Micro blog architecture

Commonly micro blog system has 6 components.

microblogging

(1)   Authentication

It handles user authentication for logging.

It also provides integrity with other authentication system like Open Id. And support Open API authentication and id mapping. For example user can change status of Facebook with Twitter message. It needs integration between facebook and twitter.

(2)   Search Engine

Find user. Find message with hash tag etc.

(3)   Posting System

Manage messages in micro blog system. Micro blog system is not complex. But it has a lot of transaction. User posts short message frequently. And search message often. So performance and capacity is important

(4)   Link (Shorten)

Micro blog has message length restriction to support SMS. So it is hard to use original HTML link in the message. (It can be very long..) So micro blog system supports “Shorten” . It is alias of URL. It shorten the long URL to aliased short URL.

(5)   Mobile Gateway

To integrate with mobile device. Mobile gateway is required. Depends on mobile phone ,mobile gateway supports Text based SMS, Image based MMS, and custom protocol(Like REST and WebService) with TCP/IP for smart phone application.

In addition mobile career vendor provide different integration interface. So micro blog system has mediation layer for converting internal protocol to career supported protocol.

(6)   Open API

Expose micro blog functionalities to external applications.

Architecture of micro blog system is not complex. But because it has a lot of transaction and provide connectivity for integration(OpenAPI) the system should have high performance requirement and capabilities & scalability.

Follow

Get every new post delivered to your Inbox.