Thursday, May 20, 2010

Overview of Citrix and Virtualization Technology

Citrix Systems (www.citrix.com) is a leading provider of technology for virtualization of applications and servers. The company was formed in 1989 and its name is a portmanteau of Citrus (the original name of the company) and UNIX. It had over $1 Billion in revenue in 2009 and employs over 4800 worldwide. Citrix is headquartered in Fort Lauderdale, Florida.

Andreas Krebs authored an excellent brief overview of Citrix technology in the All Covered Learning Center:

In 1995, Citrix introduced the world to virtualization with NT 3.5 WinFrame, an application virtualization solution.  Later, they offered NT 4.0 Terminal Server, a desktop virtualization solution.  As the founders of virtualization technology, Citrix is the company that many businesses recognize and trust for their virtualization solutions.

Server Virtualization
XenServer is Citrix’s no-cost server virtualization solution that gives small and medium sized businesses an affordable and effective way to adopt an enterprise-class technology.  Unlike other server virtualization solutions, XenServer provides premium grade features for free.  Benefits include the following:
  • XenServer supports an unlimited number of servers, virtual machines and physical memory.
  • XenServer includes a conversion function will allow you to convert a virtual server into a physical server and physical server into a virtual server as needed.  (Other server virtualization solutions will charge you for this feature.)
  • Shared SAN and NAS storage between server hosts maximize available storage on the network.
  • All virtualized servers can be accessed and maintained from a single location.
  • In the event of server failure, affected virtual machines are automatically restarted on other production servers.
  • A library of pre-configured virtual machine templates make it easy to rapidly create a test or production environment.
  • Centralized patch management makes it easy to keep virtual servers updated.
  • Easy migration of virtual systems to from one host server to another makes it simple to maintain host servers.
  • XenServer is open-source and takes advantage of the intellectual contributions of thousands of users, hundreds of companies and partners.
  • XenServer is compatible with most server hardware that is currently available.
Desktop Virtualization
XenDesktop is Citrix’s desktop virtualization solution.  As an on-demand service, XenDesktop will deliver a Windows desktop to any user, anywhere.  Features include the following:
  • XenDesktop users can access their desktop and corporate applications from any PC, Mac, thin client or smart phone.
  • XenDesktop gives users a computing experience that rivals a local PC, even when using Multimedia, 3D graphics or VoIP-integrated applications.
  • Each desktop is customizable to meet the performance and security needs of individual users.
  • XenDesktop will work with your existing hypervisor, storage and Microsoft infrastructures—you don’t have to spend more money buying compatible programs.
Application Virtualization
XenApp is Citrix’s application virtualization solution that allows users to directly access Windows applications from through a desktop computer or web browser.  Benefits include the following:
  • Windows applications can be accessed on devices that have non-Windows based operating systems—more than thirty operating systems are currently supported.
  • This solution requires that only one virtualized copy of an application such as Office 2010 be installed and maintained, while allowing any number of users to access and use it as if it was locally installed.
  • Applications can be streamed directly from the host server for users working on the corporate network or remotely.  Permissions can even be set up to allow users to download and access apps while offline.
  • Virtualized applications function as if they are locally installed.
  • Application delivery and access is customizable for each user and their preferred device, network and typical access location.
Virtualization Management
Essentials for XenServer is an add-on enhancement that complements XenServer by providing additional features and integrated management capabilities for server, desktop and application virtualization.
  • One-click access to native storage makes device management simple.
  • Automated high-availability protection will move virtualized machines from a failed host server to another physical server.
  • Automated management of lab infrastructures decreases the complexity, time and cost of managing non-production environments.
  • Automated workload balancing will move virtual servers to hosts with more available resources based on pre-configured policies.
There are many use cases for Citrix virtualization, including the standardization of desktops, the delivery of legacy applications, enhanced security, being able to deliver a uniform user experience on a variety of different platforms, and others. These all enable lower total cost of ownership and other benefits to the organizations that deploy virtualization technologies.

This post is a very brief overview of Citrix and virtualization technology. The Citrix website is an excellent place to learn more about this important technology.

Thanks for reading.

Thursday, May 6, 2010

Introduction to Kanban

The purpose of this post is to provide a general overview of the practice of Kanban in software development and its relationship to Scrum. There is a lot of great material available on the Web on Kanban, and one of the best of them is this article: Kanban Development Oversimplified. The main website for Kanban is here. For comparison purposes (and for reference) review my post on Agile Development.

This is a discussion and definition of Kanban from Karl Scotland:

"While the word Kanban comes from the Japanese for “visual card”, the term Kanban as used by the Kanban Software Development community, represents much more than a standard task-board. Additionally, the Kanban Software Development community have not tried to replicate the mechanism of the Toyota Production System kanban tool exactly, but have taken the underlying principles in order to achieve similar effects in software development. So what is a Kanban System for Software Development?

A Kanban System visualizes some unit of value. This unit of value could be a User Story, Minimal Marketable Feature, Plain Old Requirement or something else. This is different from a task-board, which generally focuses on visualizing the current tasks.

A Kanban System manages the flow of these units of value, through the use of Work In Process limits. This is different from a task-board, which generally has no WIP limits, but aims to have all tasks complete by the end of a time-box.

A Kanban System deals with these units of value through the whole system,from when they enter a teams control, until when they leave it. This is different from a task-board, which generally only deals with the work in the build/test stage, but shows no information about what work is being prepared, or what work is ready for release.

By putting these 3 properties of a Kanban System together, we can describe a Kanban System for Software Development as one which allows value to flow through the whole system using WIP limits to create a sustainable pipeline of work. Further, the WIP Limits provide a mechanism for the Kanban System
to demonstrate when there is capacity for new work to be added, thereby creating a Pull System. Finally, the WIP Limits can be adjusted and their effect measured as the Kanban System is continuously improved.

A task-board simply shows what development tasks have been predicted to be done in the current time-box, with their status."

Kanban fills a niche in the world of Agile Development in that it provides a system to control the flow of work where the development team has other duties (production support, multiple projects) and cannot work in dedicated Scrum Sprints (Agile iterations). Kanban allows for teams and individuals to work on specific units of value and advance them through the various stages based on WIP limits.

Here is a great story from the  Kanban Development Oversimplified article that illustrates some of the key pieces of Kanban:

"You’ll find a lot of terminology in Lean software development comes from Japan and from the Toyota Production System in particular. Kanban translated literally: “Kan” means visual, and “ban” means card or board.

Picture yourself on a Toyota production line. You put doors on Priuses. You have a stack of 10 or so doors. As you keep bolting them on, your stack of doors gets shorter. When you get down to 5 doors, sitting on top of the 5th door in the stack is a card — a Kanban card — that says “build 10 doors.” Well it may not say exactly that — but it is a request to build exactly 10 more Prius doors.

You pick the Kanban card up, and run it over to the guy who builds doors. He’s been waiting for you. He’s been doing other things to keep busy while waiting. The important thing here is that he’s NOT been building Prius doors. He takes your Kanban card and begins to build doors.

You go back to your workstation, and just a bit before your stack of doors is gone, the door guy comes back with a stack of 10 doors. You know that Kanban card is slid in between doors 5 & 6. You got the doors just in time. The whole thing sorta works like magic. Only you wish you had the door-building job. That guys seems to have a lotta free time on his hands.

Kanban cards are used to limit the amount of inventory the factory builds. It doesn’t do the Toyota factory any good to build doors faster then they can assemble cars. It just wastes money on excess doors, and parts of doors. Excess work in progress is considered to be waste in Lean manufacturing. (It’s probably waste in non-Lean manufacturing too.) In the above completely made up example, you’ll never have more than 15 finished doors hanging around. (Mudha is Japanese for waste. Learn it to impress your Lean friends.)"

The article goes on to the more practical aspects of the process:

"Kanban thinking in software development attempts to do a similar thing. We want to limit unnecessary work in progress to be no higher than it needs to be to match the throughput of the team. Kanban thinking applied to Agile development results in sweeping changes that throw out much of what Agile practitioners consider necessary practice.

In Kanban development:
  • time-boxed development is out
  • stories are larger and fewer
  • estimation is optional or out completely
  • velocity is replaced by cycle time
By now you should be scratching your head a bit. Exactly what’s left of Agile if we get rid of time-boxes, change the meaning of stories, and stop measuring velocity. And, exactly what do car doors and Kanban cards have to do with software development?"

A key component of Kanban is the visual board that is used for managing work in process. Most of the time it is a physical board similar to this one:

This board was reconstructed from photos of boards used at Yahoo.

There are also online versions of Kanban boards such as LeanKit Kanban and Kanban Tool. The key is to use some type of information radiator so that everyone can see what is on the board and what the status is. Seeing the flow is also important so and bottlenecks can be identified and cleared out. It is important to set limits for each stage in the process as this will govern the flow of cards from point to point.

All of the columns should be customized to the team and the project being worked on. There are several aspects of Scrum that need to be upheld, especially in the area of collaboration and communication. Just because there isn't a defined iteration schedule does not mean that the software is not demonstrated and planning meetings are not needed. These are scheduled at some interval so that the customer gets to see working software and the team is able to work together to keep the flow moving. Regular review of the process (similar to the Scrum Retrospective) is also done as part of Kanban. There are other aspects of Scrum and Agile that the team can use as part of this process. Again, customization of the process is encouraged.

This is a very brief overview of one of the emerging software development methods. Please access some of the references on the Limited WIP Society website for more in-depth information.

I hope you found this interesting and informative. Please post questions and comments below.

Wednesday, May 5, 2010

Digital Habitats (Part 8)

This is a cross-post from my blog on the military Social Media tool milBook.

This is the eighth and last  post in a series based on the book Digital Habitats: stewarding technology for communities (CPsquare Publishing, © 2009) by Etienne Wenger, Nancy White, and John D. Smith. This post will cover Chapters 10,11, and 12 of the text.

Chapter 10 of the book is a series of checklists and other resources designed to help a tech steward put some of the other concepts of the text into action. They are worth reviewing and using as appropriate.

Chapter 11 covers emerging trends in technology stewardship and how these trends may affect the intersection of community and technology in the digital habitats of the future. The roles in the community are blurring and the process is accelerating.

The authors explain these trends in terms of the three polarities that were defined earlier in the text and a previous post. They go on to add a fourth dimension that spans all of these polarities. Here is a brief overview of these reconfigured polarities:

1. Increased connectivity across time and space (Polarity: Dynamic fluidity of togetherness and separation)
- Ubiquitous connectivity: The progression here has been from intermittent connections using modems to the current "always on" wireless and mobile technologies.
- Virtual presence: We have gone from purely text-based interaction to virtual presence, multimedia on demand, and avatar-based environments.

2. New modes of engagement (Polarity: Reweaving participation and Reification)
- Generalized self-expression: This manifests itself through the Web 2.0 technologies that enable users to publish content rapidly and easily using blogs and "personal space" sites.
- Mass collaboration: Examples of this are wikis, tagging, social networking sites, publicly shared, interactive storage spaces.
- Creative reappropriation: This is an emerging practice where remixes, social bookmarking and personalized lists, and mashups create content from existing content.

3. Changing geographies of communities (Polarity: Dynamic group formation and multimembership)
- Homesteading on the web: The proliferation of sites, tools, and links coupled with the multiplicity of places for any topic form emergent patterns of meaning and interrelatedness.
- Dynamic boundaries: These are boundaries that are defined by activities and their traces, including the tools that rank locations and direct traffic.
- Individualization of access: RSS, personalized aggregation, customized search, and personalized access to sites allow users to individualize their online experience.

4. Toward a socially active medium (Polarity: Ability to find each other and to see the social fabric)
- Social Computing: This is the phenomenon that includes social relations and interactions as data, "folksonomies" and tagging, networking services, distributed decision making processes, reputation computing, and socially directed search all have a role.
- Semantic web: Meaning-based representation, intelligent agents, and new-generation search is changing online interaction in fundamental ways.
- Digital footprint: All this comes together to create a trail of web activities that become an expression of an online identity.

These reconfigured polarities present the tech steward a variety of challenges and opportunities, including overwhelming volume, falling into groupthink, vulnerable systems, and stretching our relationships. All must be considered as digital habitats move into the future.

Chapter 12 is also oriented to the future in that it proposes a learning agenda for technology stewardship that is an invitation to explore three areas where technology stewardship will matter:

- Serving existing communities: This includes the concepts of connectivity and proximity, shifting boundaries and peripherality, new modes of engagement, creative reappropriation and community voice, transparency in a socially active medium, and dealing with multiplicity.

- Making new communities possible: Digital habitats have the potential to enable the formation of new groups and communities. They do this by allowing people to find each other on a wider scale (size and meaningful engagement), being catalysts for communities, allowing access to living practice through virtual presence, creating complex geographies of identity and domain-based relationships, and seeing the social in the technological.

- Stretching our very notion of community: The interaction of community and technology affects both to the point of challenging our assumptions about them. The evolution of Proto-communities (emerging patterns of communities and networks) is an excellent example of this. Also, the emerging practices of stewardship that allows for balancing network and community processes is important. Finally learning between the old and the new will keep everything in perspective.

The text goes into more detail on each of these concepts.  

Supporting all of this is a literacy of technology stewardship that includes a strong understanding of the concepts of technology configuration, community polarities, and community orientations that have been covered in previous posts.  In fact, technology stewardship is on its way to becoming a community of practice in its own right as it becomes more central to the learning experience of a growing number of communities. This practice of enabling learning with technology will become increasingly widespread and the stewardship of these digital habitats an important part of the success of the communities that inhabit these virtual spaces.

I hope you have enjoyed this series of posts on a very important book. Thanks again for reading, and I invite you to post comments and questions below.