Wednesday, November 27, 2013

Bitcoin

Introduction
Emerged in 2009, Bitcoin is a digital cash (Electronic Payment System) that uses peer to peer technology with no central authority or financial institutions for issuing, regulating or managing its transactions. Satoshi Nakamoto is said to be the one who introduced bitcoins concept, however since 2010 there is not any traces of him. Now the whole bitcoins network is decentralized and no-one owns this network and this is controlled by the bitcoin users throughout the world. These Bitcoins need to be purchased using standard currency at Bitcoin exchanges and then you can use these Bitcoins to purchase anything similar to what can be bought using cash/plastic money in shops or online. Mt. Gox is a major exchange to buy Bitcoins, though there are many other exchanges also). Once you purchase the bitcoins, you can use these bitcoins in any part of the world where these are accepted by the merchandise. There are also a finite number of bitcoins in the world, with a limit of 21million bitcoins set.
 
This technology is open source and its design is available to everyone on http://bitcoin.org.
 
How it works
 
This section explains how to activate, purchase and use bitcoins:
  
  • Download a bitcoin wallet from http://bitcoin.org.
  • Purchase some bitcoins. From any exchange or receive it from any of other person who have bitcoins.
  • Use these bitcoins to purchase items where these bitcoins are acceptable such as Namecheap or WordPress to name a few.
Bitcoin wallets come in three variants based on your usage patterns mainly: 
  • Software Wallets – This is targeted for Laptops and Desktops.
  • Mobiles Wallets (targeted for Smart Phones)
  • Web Wallet (targeted for roaming users)
Users download a software meant for their desktop or mobile phone. This can be treated as a Bitcoin wallet. Now the bitcoins can be purchased and stored in this wallet. In the backend, the bitcoin network shares a public ledger “Block Chain” that contains all the processed transactions. These transactions are protected by digital signatures.  
   
Bitcoin Mining
 
It is the process of spending computing power to process transactions, secure the network, and keep everyone in the system synchronized together in a decentralized environment. All the operators are located geographically at different locations across the globe. Mining is also a temporary mechanism responsible for issuing new bitcoins. Anyone can process transactions using the computing power of specialized hardware and earn a reward in bitcoins for this service.
 
For new transactions to be confirmed, they need to be included in a block along with a mathematical proof of work. Such proofs are very hard to generate because there is no way to create them other than by trying billions of calculations per second. This requires miners to perform these calculations before their blocks are accepted by the network and before they are rewarded. As more people start to mine, the difficulty of finding valid blocks is automatically increased by the network to ensure that the average time to find a block remains equal to 10 minutes.
 
Bitcoin miners are neither able to cheat by increasing their own reward nor process fraudulent transactions that could corrupt the Bitcoin network because all Bitcoin nodes would reject any block that contains invalid data as per the rules of the Bitcoin protocol. Consequently, the network remains secure even if not all Bitcoin miners can be trusted.
 
Security
 
Bitcoin use strong protocol and crypto algorithm and since its inception, there has not been any threats reported so far. Some security flaws were identified at times and addressed accordingly. On the other side, as Bitcoins are just a digital representation of cash, there are couple of vulnerabilities associated with this. For example if you lost your cash or accidently damage your cash, the same can happen to your bitcoins. These are stored in the form of private keys in your wallet files, these files can be deleted, stolen or get corrupted by the file-system errors.
   
Some security features have quickly developed by bitcoin such as wallet encryption, offline wallets, hardware wallets, and multi-signature transactions. There is other concern about changing the bitcoin protocol, however this is not true. All the bitcoin clients need to use the same protocol and with a valid signature. This ensure there is not any double spending of the same bitcoin by the same user, not to generate the bitcoins out of thin air, spend other’s bitcoins or corrupt the entire network. 
 
This is the biggest distributed computing project in the world and till date this has not been hacked.
 
Challenges
 
Every new technology come with lot of challenges, Bitcoin is not exception, this also has it’s own challenges: 
  • In principal, there is not any possibility to change the Bitcoin protocol, however a majority of miners could arbitrarily choose to block or reverse recent transactions. Because Bitcoin only works correctly with a complete consensus between all users, changing the protocol can be very difficult and requires an overwhelming majority of users to adopt the changes in such a way that remaining users have nearly no choice but to follow. Practically this is really very difficult to achieve as no-one want to mess with their money.
  • A transaction fee is based on the transaction rather on the amount. This means if you need to transfer a big bitcoin amount, the charges will be comparatively less. On the other hand if you need to have many small denomination transfers, this may cost you higher. Looking this aspect, if we target the users who need to make routine transactions, using bitcoins might not be feasible.
  • Too much wait time for a received bitcoin to be used. Bitcoins are received instantly, however it takes approximately 10 minutes before you can spend these bitcoins. The reason for taking this much time is that the transaction needs to be cascaded to public ledger to ensure that these bitcoins are not send to anyone else. Once the transaction is included in 1 block, it will continue to be buried under every block after it to decrease the risk of reverse this transaction.
  • Volatility of bitcoin price. Since its inception, there is a huge variance on the bitcoin prices. It was less than $1 for a Bitcoin when started; now it’s more than $650 for a Bitcoin. These price swings may create a fear of accepting bitcoins as a currency although there are enough true believers in the concept and long-term promise of Bitcoin that it is unlikely to fade from the scene any time soon.
  • Legality, Bitcoins are yet not legalized in many countries. Regulators from various jurisdictions are taking steps to provide individuals and businesses with rules on how to integrate this new technology with the formal, regulated financial system. Till the time I write this blog, there was not any formal legal regulations were available.
  • Illegal Usage, Bitcoin is another form of money (called as virtual money), and money has always been used both for legal and illegal purposes. Recently a website silkroad has been shut down that uses bitcoins to sell drug-and-weapons. This raise a lot of questions; if this technology also gives me the same bad impacts, then what is the purpose of using it? 
  • Cross Country Usage issues. Although it is said that this currency can be used in any part of the world, there are lot many other issues involved if I want to purchase something in one country and what it to shipped to a different country. This is only a single milestone achieved in the overall Supply Chain Management in cross borders.
 
Takeaway
 
I would still like to wait for some more time until this technology is fool proof against all odds and is regulated. 
 
Hope you like this article. Your suggestions are always welcome.
 
Refrences:
 

Thursday, March 21, 2013

Cloud Computing

As the businesses are growing, we need more resources to run the day to day activities. IT is a major part of these resources. Almost 60-70 % of this complex IT infrastructure budget goes towards maintenance. This cost includes infrastructure, manpower, electricity, software cost, hardware cost etc. While the individual IT systems and applications in service are often well considered and expertly implemented, the sheer scale of the ongoing IT investment itself has emerged as the dominant concern. Even when best-of-breed technologies, open standards, market-leading vendors, and modern architectural practices like SOA have been employed pervasively, most enterprises now find themselves with too many platforms, too many technologies, too many domains of expertise, and too many vendors to coordinate and manage.

Cloud Computing is making this infrastructure and services available on-need basis or in other words is "renting" or borrowing online software instead of actually purchasing and installing it on their own computers. It is the same business model as people using Hotmail or Yahoo mail services, except that cloud computing goes much further. Cloud computing is where entire businesses and thousands of employees will run their computer tools as online rented products. All of the processing work and file saving will be done "in the cloud" of the Internet, and the users will plug into that cloud every day to do their computer work. The Cloud will provide everything that includes hard disk, development platform, database, computing power or complete software applications. To access these resources from the cloud vendors, organizations do not need to make any large scale capital expenditures. Organization need to "pay per use" i.e. organization need to pay only as much for the computing infrastructure as they use. The billing model of cloud computing is similar to the electricity payment that we do on the basis of usage.

We can divide the services provided by cloud in three major categories:

  • IaaS (Infrastructure as a Service) - includes service like computer infrastructure, storage, databases, hosting services etc
  • PaaS (Platform as a Service) - cloud includes service like full or partial application development
  • SaaS (Software as a Service) - includes service like a complete turnkey application, such as Enterprise Resource Management etc.

On the basis of usage, all the above services can be provided as:

  • Public - In a public Cloud resources are dynamically provisioned on a fine-grained, self-service basis over the Internet. Amazon’s Elastic Compute Cloud (EC2) is an example of public IaaS service.
  • Private - Compu ting on private networks. This offer the ability to host applications or virtual machines in a company's own set of hosts. These provide the benefits of utility computing – shared hardware costs, the ability to recover from failure, and the ability to scale up or down depending upon demand. This is not a very widely accepted as users still have to buy, build, and manage this cloud and thus do not benefit from lower up-front capital costs and less hands-on, however this is helpful for mission critical services where security is of very high concern.
  • Community/Partner cloud - A community cloud is used where several organizations have similar requirements and seek to share infrastructure so as to realize some of the benefits of cloud computing. With the costs spread over fewer users than a public cloud (but more than a single tenant) this option is more expensive but may offer a higher level of privacy, security and/or policy compliance. Examples of community clouds include Google’s "Gov Cloud".

How does it work?

When a user accesses any application/service from the cloud, it’s IP Address can be used to establish where the user is located. DNS services can then direct the user to a cluster of servers that are close to the user so the site can be accessed rapidly and in the user's local language. Users do not log in to a server, but they log in to the service they are using by obtaining a Session ID or Cookie. Whatever user sees in the browser usually comes from a cluster of web servers. The web servers run user interface software which collects commands from the user (mouse clicks, key presses, uploads, etc.) and interprets them. Information is then stored on or retrieved from the database servers or file servers and an updated page is displayed to the user. The data across the multiple servers is synchronized around the world for rapid global access.

Benefits of using Cloud Services

Need Based Availability

Users always have a choice to opt the cloud services as the need arise and later on if required, user can any time withdraw the services. It gives users flexibility to do his desired work with a very minimum spending and maximum utilization of the resources.

“Pay-Per-Use” Billing Model

This model is suitable for those type of business where the client want to commence a new business or want to revamp his current IT implementation. Client has to pay only for the required users with a flexibility of addition/deletion of these users any time and he will be charged on the basis of current working user accounts only.

In another similar model, users need to pay only for the services they have opted for i.e. where the vendor is providing number of services and client need to use only some specific set of services. For example in our mobile phones, we are being charged only for the services that we have opted for.

CapEx Saving

This is the most sought after option people look for cloud services. This is where client saves most of his spending. As already depicted, every business need to spend a large chunk of their budget on infrastructure, hardware, software and on support activities for IT to run their business. If they use the cloud services, a major portion of this budgeted amount can be saved and the same can be spend on other business activities giving business a huge CapEX saving.

Location Independent

When using Cloud services, location doesn’t matter. This means business doesn’t come to halt when there are some unforeseen circumstances arise in day to day life that is showstopper to continue business. Cloud services are geographically located on different location so business runs as usual without any impediment.

Zero Touch Automation

Client need not to do a lot of software development, purchase hardware, handling different SLA for s/w, h/w etc. All the services are located at one place so if any changes required, they can be implemented on servers only and no changes are required on client side.

Reduced Time to deployment

Most of the services are ready to use and available on the cloud, you just need to understand your requirement and need to tweak the existing services to make these suitable for your business. If there are any generic changes required on these services, it either doesn’t require any deployment or need a very minor deployment window. It helps in business continuity.

Scalable, Reliable & Sustainable

Scalability is accomplished through load balancing of application instances running separately on a variety of operating systems and connected through Web services. CPU and network bandwidth is allocated and de-allocated on demand. The system's storage capacity goes up and down depending on the number of users, instances, and the amount of data transferred at a given time.

Intelligent load-balancing in today's RAC nodes with faster connection failover gives client a feel of reliability. These cloud services provide a faster response time for enterprise applications that includes intensive database work.

Vendors are providing services for a mix of small, medium-size, and large companies with different options/services. These services start on a low-cost, fixed-priced model and quickly scale capacity. It provides a road map for these services so that these can be scaled across the IaaS, PaaS, and SaaS flavors with proper network capacity to consume all services and make these services sustainable for long.

Desktop feel in a browser

A client need a browser to access all the cloud services. Once the services have been deployed on clouds, users can access their desktop applications in browser itself.

Multiple protocol support including HTTP, SOAP etc

There is a support available for most of the protocols for using these cloud services so it doesn’t matter which product you want to use, just need to be sure that the product you are planning to use support the standard protocols used by your cloud vendor.

Usage of old/outdated hardware at client side.

As most of the processing is done on server side, client can use their old outdated hardware. It saves a lot of spending that is usually done when you want to implement a new technology in today’s world.


Challenges

  • Proprietary APIs and different formats for importing and exporting data. As most of the cloud vendors have their own set of services/tools, it becomes somewhat difficult if we want to change the provider at a later stage.
  • Companies who are far from the location of cloud providers could experience latency, particularly when there is heavy traffic.
  • Resource Utilization – Though all the providers are using state of the art technologies to best utilize their resources, it becomes very challenging to provide the best resource utilization on economical prices.
  • Encryption Algorithm – Many vendors has their own set of encryption algorithms to store the customer data. It sometimes become difficult when changing vendors so a care must be taken while choosing the vendors if they are using their own proprietary encryption algorithms or they are using some industry standard encryption algorithms.
  • High Speed Internet connection is still a major issue in remote locations especially in developing countries.
  • Data Security when it is available on Cloud. Though the provider use high level of encryption, a lot need to be look into for cross county data sharing as the customer do not know where his data is located.
  • Better resiliency of resources is required so as to provide a 100% uptime to the customers.
  • Software Licensing also need to be considered.