Saturday, January 31, 2015

OpenStack dominance: What to Look for in FUTURE

Openstack is a set of software tools for building and managing cloud computing platforms for public, private and hybrid clouds. Backed by some of the biggest companies in software development and hosting, as well as thousands of individual community members, many think that OpenStack is the future of cloud computing. OpenStack is managed by the OpenStack Foundation, a non-profit which oversees both development and community-building around the project.
The cloud is all about providing computing for end users in a remote environment, where the actual software runs as a service on reliable and scalable servers rather than on each end users computer. Cloud computing can refer to a lot of different things, but typically the industry talks about running different items "as a service"—software, platforms, and infrastructure. OpenStack falls into the latter category and is considered Infrastructure as a Service (IaaS). Providing infrastructure means that OpenStack makes it easy for users to quickly add new instance, upon which other cloud components can run. Typically, the infrastructure then runs a "platform" upon which a developer can create software applications which are delivered to the end users.
Open stack comprise of many different parts. Because of its open nature, anyone can add additional components to OpenStack to help it to meet their needs. Just to make some standard around OpenStack community has collaboratively identified nine key components that are a part of the "core" of OpenStack, which are distributed as a part of any OpenStack system and officially maintained by the OpenStack community.  OpenStack consists of seven core projects:
·         Compute (Nova)
·         Networking (Neutron/Quantum)
·         Identity Management (Keystone)
·         Object Storage (Swift)
·         Block Storage (Cinder)
·         Image Service (Glance)
·         User Interface Dashboard (Horizon)

·                     Nova OpenStack Compute (Nova) controls the cloud computing fabric (the core component of an infrastructure service). Written in Python, it creates an abstraction layer for virtualizing commodity server resources such as CPU, RAM, network adapters, and hard drives, with functions to improve utilization and automation.
·                      Swift OpenStack Object Storage (Swift) is based on the Rackspace Cloud Files product and is a redundant storage system ideal for scale-out storage. This makes scaling easy, as developers don’t have the worry about the capacity on a single system behind the software. It also allows the system, rather than the developer, to worry about how best to make sure that data is backed up in case of the failure of a machine or network connection.
·                     Cinder OpenStack Block Storage (Cinder) provides persistent block-level storage devices for use with OpenStack compute instances. This more traditional way of accessing files might be important in scenarios in which data access speed is the most important consideration.
·                     Neutron/Quantum Networking (Neutron), formerly called Quantum, includes the capability to manage LANs with capabilities for virtual LAN (VLAN), Dynamic Host Configuration Protocol, and Internet Protocol version 6. Users can define networks, subnets, and routers to configure their internal topology, and then allocate IP addresses and VLANs to these networks. Floating IP addresses allow users to assign (and reassign) fixed external IP addresses to the VMs.

·                     Horizon is the dashboard behind OpenStack. It is the only graphical interface to OpenStack, so for users wanting to give OpenStack a try, this may be the first component they actually “see.” Developers can access all of the components of OpenStack individually through an application programming interface (API), but the dashboard provides system administrators a look at what is going on in the cloud, and to manage it as needed.
·                     Keystone group of internal services exposed on one or many points. It provides multiple means of access, meaning developers can easily map their existing user access methods against Keystone.
·                     Glance provides image services to OpenStack. In this case, "images" refers to images (or virtual copies) of hard disks. Glance allows these images to be used as templates when deploying new virtual machine instances.
·                     Ceilometer provides telemetry services, which allow the cloud to provide billing services to individual users of the cloud. It also keeps a verifiable count of each user’s system usage of each of the various components of an OpenStack cloud. Think metering and usage reporting.
·                     Heat is the orchestration component of OpenStack, which allows developers to store the requirements of a cloud application in a file that defines what resources are necessary for that application. In this way, it helps to manage the infrastructure needed for a cloud service to run.

OpenStack dominated as top open-source Infrastructure-as-a-Service (IaaS) platform in 2014, gaining global adoption in many different industries. My prediction is that in 2015 OpenStack is going to dramatically change the Integrated System landscape. OpenStack gained significant traction in 2014 and is becoming a major platform for establishing clouds and data centers. The advantages of OpenStack are openness and higher levels of scalability and agility that address the needs of many applications. Existing Converged Systems are based on closed cloud orchestration software and thus don't provide the openness and choice that customers expect. Retrofitting Converged Systems to leverage OpenStack is not trivial and cannot meet the scalability and agility levels of Hyper-Convergence.

OpenStack vendors, meanwhile, started to see actual revenues, and many multimillion-dollar deals were publicized, as was approximately $5 billion estimated revenue expected by 2018.
As we move further into New Year 2015, key developments to watch include:
·         Attention from bigger vendors has improved confidence among larger enterprise customers. Thanks this push, the OpenStack community looked into enterprise workloads and needs, too.
·         OpenStack is expected to gain adoption at managed service providers, cloud service providers, and large enterprises that have the staff and expertise to leverage the benefits and value of OpenStack. Over time, as the OpenStack user base grows, and the eco-system solidifies and simplifies OpenStack deployments, more enterprises as well as SMBs will leverage it too.
·         More and more focus would be given to an introduction to database as a  service with an emphasis on Openstack using Trove
·         OpenStack has shifted from being a so called developer driven project to one that is more customer-friendly. OpenStack will be easier to use, manage, and scale.
·         Requirement for the common/central product management is now increasingly recognized, particularly after explosion of peripheral projects and services.  We are moving in right direction through operator- and enterprise-centric work groups.
·         Despite its pain points and deficiencies, OpenStack has the level of product maturity and features that makes it a serious option for enterprise adoption. Organizations now have more help than ever before to adopt OpenStack. We expect the adoption to grow globally along with more moving in to production.

In 2015, OpenStack stands very solid growth and its evolution will continue as the larger vendors continue building out their offerings geared at their customers’ requirements.

Tuesday, January 27, 2015

BYE BYE FLASH......YouTube now defaults to HTML5

Over the last four years, YouTube have worked with browser vendors and the broader community to close those gaps, and now, YouTube uses HTML5 <video> by default in Chrome, IE 11, Safari 8 and in beta versions of Firefox.

The benefits of HTML5 extend beyond web browsers, and it's now also used in smart TVs and other streaming devices. Here are a few key technologies that have enabled this critical step forward:

By switching to HTML5, YouTube can now also make wider use of Google’s VP9 codec.
YouTube says this switch allows videos to start 15 to 80 percent faster and reduces the average bandwidth needed to stream a video by 35 percent. That may not seem like a big deal right now, but once you start streaming 4k video, that 35 percent reduction could be the difference between enjoying the video or staring at the “buffering” screen. YouTube started streaming VP9 videos in 2013 and has since served “hundreds of billions of VP9 videos.”

Now that HTML5 video is the default on YouTube, Google is deprecating its old-style <object> Flash embeds and its Flash API. YouTube recommends you only use its <iframe> embeds to embed videos going forward because that allows it to use whatever technology your visitors’ browsers support.

HTML5 video player uses a Media Source Extension feature called adaptive bitrate which adjust video quality on the fly depending on network conditions, reduced buffering by more than 50 percent globally and as much as 80 percent on heavily-congested networks.


Finally, Google is using other fancy technologies like Fullscreen APIs for immersive fullscreen viewing experience with a standard HTML interface, as well as Encrypted Media Extensions and Common Encryption for supporting multiple content protection technologies on different platforms with a single set of

Web Real-Time Communication (WebRTC), an open project for real-time voice and video communication, allows YouTube’s HTML5 video player to provide broadcasting tools from within the browser, no plugins required.

Using the new fullscreen APIs in HTML5, YouTube is able to provide an immersive fullscreen viewing experience (perfect for those 4K videos), all with standard HTML UI.

These advancements have benefitted not just YouTube’s community, but the entire industry. Other content providers like Netflix and Vimeo, as well as companies like Microsoft and Apple have embraced HTML5 and been key contributors to its success. By providing an open standard platform, HTML5 has also enabled new classes of devices like Chromebooks and Chromecast. You can support HTML5 by using the <iframe> API everywhere you embed YouTube videos on the web.

Source: YouTube

Friday, January 16, 2015

Why testing automation is the key to mobile app

iOS apps Testing

Testing native iOS apps has had a bad rap in the past, especially when it comes to test automation. It has proven to be difficult, time-consuming, and the tools were not as capable as they are on other platforms (most notably Java). Positive note, the round trip from making an edit in the code, to compiling, to deploying and debugging is extremely fast when using the iOS Simulator. This helps cut test execution time down considerable compared to Android. Great strides have been made since iOS 8 and Xcode 6 have been out, so if you have not looked into automated testing of your iOS apps in a while, you may want to take a second look.

XCTest – Out of the box, iOS developers have access to a respectable unit testing framework know as XCTest. Think of unit testing as testing the code from the inside out. Looking at the internal operations under the covers, a well written suite of XCTests can quickly point to where problems are in your code base as you update to newer iOS versions. By default, all projects created from within Xcode generate an initial test suite that developers can expand upon.

OCMock/OCMockito – Mocking is a testing technique used to mimic situations that are difficult to reliable create in a repeatable and predictable fashion during the execution of a test. An example would be to replicate a trade on Wall Street or a bank transaction, something you may not want to do for real over and over again all day long. OCMock and OCMokito are two popular testing frameworks that allow developers to create more reliable testing environments that do not depend on the availability of complex back-end systems in order to provide an assessment of the overall health of the code.

Xcode Service and Continuous IntegrationContinuous Integration refers to a technique in development that all code changes that are saved to the system (referred to as the code repository) are compiled and tested on an automated and continuous basis. Monitoring the overall health of your code can alert developers when a potential problem is first introduced to the code. There is typically a very visible and accessible report that allows developers to know exactly when something has gone wrong during development. That way there is nothing that any one developer can do without every developer instantly knowing about it; good or bad. XCode Service has made monitoring the health of iOS project as easy as possible.

Automating UI Testing with Instruments – Apple has always provided a rich set of instruments that helped developers know what was going on inside its apps. From memory leaks, random crashes, and battery drains, instruments have proven to be an invaluable tool when it comes to writing high quality and dependable apps. Automating the testing of the user interface is no exception. Where unit tests test the app from the inside out, user interface tests test the app from the outside in. Now developers can create test scripts that will execute tests over and over again against the user interface to ensure that changes they make do not break anything they thought they were done developing.

Android App Testing

The biggest challenge to automated testing on Android has been test execution time. Even when leveraging the maturity of testing technologies that have evolved on the Java platform, it can still take hours for a suite of tests to complete. This is due primarily to the use of emulators in testing: emulators can slow development to a crawl at times.

Tethering a device to an automated test server can take a test device away from a developer or tester, but does prove to run things a lot faster. There are faster emulators out there like GenyMotion, but even then, looking for an even faster solution can make the difference in how often the tests get executed by members of your development team.

Another difference you will find when comparing iOS to Android is that for iOS, there is typically one and only one way to do things: the Apple way. With Android there are almost always more than two or three ways to accomplish about the same thing; unit testing, mocking, continuous integration and user interface testing.

JUnit/JUnit 4 – While the default Android testing API for unit testing, AndroidTestCase, is based on the JUnit 3 API, you can now consider switching to JUnit 4 to unit test your Android apps by using AndroidJUnitRunner. Like XCTest on iOS, JUnit is a unit testing framework meant to test how your app works on the inside. This is a developer’s first level of defense when trying to keep the quality of code that worked perfectly well when it was first written, from breaking some time down the road.

Mockito/Robolectric – While Mokito is more of a traditional mocking framework that can be used on the device or within an emulator, Robolectric is more of a replacement of the emulator or device entirely. Almost an “uber mock” if you will, Robolectric allows developers to execute tests almost anywhere. The advantage that Robolectric brings to the table is speed, you will find that your tests perform much faster, sometimes an order of magnitude faster. You can almost consider it more of a simulator replacement for Android’s emulator that provides just enough support to create a testing environment stable enough to provide value to your testing activity. Value that typically degrades when tests take way too long to execute.

Jenkins/Bamboo – Continuous integration servers that check the health of your Java code have been around for years. Technologies and servers have come and gone many times over. Two of the more popular choices for introducing a Continuous Integration environment to your Android projects are Jenkins and Bamboo. Both provide a means of monitoring your code base, automatically executing tests, and alerting developers when something has gone terribly wrong.

Calabash/Appium – While not entirely exclusive to Android as a User Interface testing harness, both Calabash and Appium provide a means of testing apps from the user interface. The ability to test the app from the outside in complements a unit testing strategy providing a more comprehensive strategy when it comes to monitoring the health of your apps code. One without the other will prove to leave gaps in your automated testing strategy that you will need to compensate for with your manual testing strategy.