f



Python in the enterprise: "Python Slithers into Systems" / Why Python? (eweek 2007)

Last summers box office hit "snakes on a plane" was the unlikely story of 
a batch of snakes getting loose in flight on a 747. In what some might 
view as just as unlikely, ITA Software is using the Python language to 
empower its airline reservation system.

Many computer language purists say that languages such as Java, C++ or C 
should be used for enterprise applications. However, ITA, a Cambridge, 
Mass., provider of airline IT software and services, is proving that 
dynamic languages such as Python can be rock-solid for enterprise work.

Indeed, ITA in September 2006 announced an agreement with Montreal-based 
Air Canada, a subsidiary of ACE Aviation Holdings, to develop a new 
reservation management system for the airline. Air Canadas next-
generation reservation system will include reservations, inventory 
control and seat availability, along with airport check-in and airport 
operations modules.

Sean Menke, Air Canadas executive vice president and chief commercial 
officer, said the new system "will be a key instrument in Air Canadas 
strategy to maintain market leadership through product and customer 
differentiation. Moreover, it will provide unprecedented flexibility and 
significant cost savings."

Leaving Legacy Behind

Dan Kelley, director of application integration at ITA, said ITA will 
deliver the system to Air Canada next year, and it will be deployed 
across the entire Air Canada network, including reservation call centers 
and airport locations throughout the world.

The reservation system will be delivered as an application hosted by ITA 
Software.

ITA Software was founded in 1996 by computer scientists from the 
Massachusetts Institute of Technology. The company provides airlines and 
travel distribution companies with airfare pricing, shopping and 
availability management systems and other technology.

ITA Softwares customers include Air Canada, Alaska Airlines, Alitalia, 
Continental Airlines, US Airways, Star Alliance, Galileo International, 
Kayak, Orbitz and others.

Like many of ITAs customers, Kayak.com, a comparison-shopping Web site 
for airfares, uses ITA Softwares QPX airfare pricing and shopping system. 
Unlike the traditional mainframe-based systems empowering most airline 
software systems, QPX uses large numbers of commodity Linux-based PCs and 
employs a component-based architecture that has no single point of 
failure and that scales linearly.

"What ITA did historically is we did search," Kelley said. "Think of us 
as Google for airfares. So if somebody like Orbitz, who is a customer of 
ours, used us, theyd write a bunch of Java code that displays their Web 
sites and does their front end. And they write a bunch of code that 
actually does reservations on one of the big mainframes that maintains 
the information about who bought what ticket. And the only thing we were 
providing was search."

However, ITAs contract with Air Canada will have the company pulling Air 
Canadas systems off the mainframe and onto a farm of Linux PCs.

"With Air Canada right now, were building an airline reservation system 
that is going to replace their mainframe-based system, which does 95 
percent of what they do as a business," Kelley said.

Yahoo delivers resource for Python developers. Click here to read more.

"When you go and you check in on a kiosk at an airport, or you check a 
bag, or buy a ticket through a travel agent or Web site, youre talking to 
this one mainframe that right now sits in Winnipeg, [Manitoba]."

Instead of one monolithic system, ITA is writing a series of components 
that are all going to be Linux processes running on different machines. 
Kelleys unit is taking a group of 30 to 50 components and combining them 
into a cohesive operating environment. Some of the key components are 
written in Python. The Air Canada system has 110 interfaces, or ways that 
people can interact with the system.

"And its hooked up to like 500 different computers here and elsewhere," 
Kelley said.

Yet, "in addition to being a huge technical challenge, nobody in the 
history of airline computing has ever swapped out a mainframe-based 
reservation system for something else," he said.

"Thats the scary thing for us. Sometime in the next year Air Canada is 
going to turn off for a few hours, and then were going to turn back on 
[using] the new system. That type of thing has never been done—going from 
a legacy system to a new system."

Dynamic Python

Much of the code ITA employs is written in Python, despite skepticism by 
some that dynamic languages are not ready for prime time. However, people 
such as Guido van Rossum, the creator of Python, point to the successful 
use of the language at places such as Google and YouTube, which endure 
enterprise-scale traffic on a daily basis.

Meanwhile, ITA has about 200,000 lines of Python code in use in its 
production software.

ITA has implemented a reliable multicast transport with congestion 
control in order to deliver multiple streams of data, Kelley said. The 
server is a mixture of C++ and Python, running on top of the Twisted 
Python framework.

"In addition, some of the data feeds we receive from our customers and 
partners are handled by network servers running on Twisted," Kelley said.

ITA has worked closely with its airline partners to build high-
performance servers to compute seat availability, Kelley said. Their 
servers aggregate data from public and private data sources, including 
both streaming and file-based data.

Each server requires a unique set of data feeds, and all the data feeds 
must be monitored to ensure the data arrives when expected and gets 
loaded as required, all while ensuring that system performance is not 
impacted by these data management tasks. ITA uses Python to automate all 
these tasks to make its systems reliable, easy to maintain and easy to 
update as its customers needs change, Kelley said.

Moreover, ITA uses a Python application to monitor its heterogeneous 
production environment that contains hundreds of servers.

"In order to do this efficiently, we developed our own monitoring 
framework that enables the requirements to be expressed in configuration 
rather than in code," Kelley said.

And ITA uses agile development methods, "which require that our software 
is always buildable," he said.

Microsoft ships Python on .Net. Click here to read more.

"To do this, we need to be able to perform automated regression tests 
with every build, but our systems require dynamically changing data for 
meaningful tests. ITA has built regression frameworks in Python to test 
both availability and reservations systems. This framework enables us to 
load test data while we test and has been built around a configuration 
language so that it is straightforward to add new test cases as needed."

The first piece of core software ITA built using Python was a software 
load balancer, Kelley said.

"We knew we needed a software load balancer to meet a customer commitment 
to have their site up and running," he said.

"We had this hacked-together version that somebody had written in Perl in 
a week, but it fell over continuously. And we needed something that we 
could put together that would replace it but that also would be 
maintainable over the long run." Python answered the call.

"Since then, weve changed how we use Python a ton internally," Kelley 
said. "We have lots more production software written in Python. We've 
basically reimplemented all our production service monitoring in Python 
and also our production software management infrastructure for a 
significant amount of what we run.

"A big component to that has been our use of Twisted Python. Were pretty 
reliant on the Twisted framework, and we use it for our base-line 
management software that we use to run the great majority of production 
services that we have, our monitoring infrastructure and the next-
generation thing that we have coming, which is a suite of programs that 
will automate the upgrade process for us," Kelley said.

A Mix of Components

The Air Canada system will be a mix of components written in different 
languages, Kelley said.

"There are components written in Java, LISP, C++ and Python. For each 
component area, we got a functional spec from the customer saying it has 
to do X, and we had to figure out who the right people were to work on 
that project, and those people decide what implementation language to 
use," he said.

There are two critical components that are written in Python, without 
which the system couldnt exist, Kelley said. The first is the inventory 
controller, which keeps track of what seats are available on what planes.

However, "we think of the most core [component] as the piece that takes 
reservation requests and records them in a database," Kelley said. "Thats 
written in LISP. But the next most critical thing is the thing thats 
maintaining inventory levels on airplanes, and thats written in Python."

The other core component is written in Python and is all "messaging well 
do with travel agents and other reservation systems. That messaging 
daemon is written in Python," Kelley said.

In addition, a significant percentage of Air Canadas ticket volume was 
done through travel agents last year, he said. In the new system, every 
one of those transactions will go through a Python message route.

But why Python?

"Historically, its not known for being something that somebody would go 
out and code enterprise software in," Kelley said. However, "its 
definitely an enterprise-caliber language in terms of stability, 
scalability [and] the ability to have a large number of people work 
together on a project.

"But its just coming into its own where you could defend it to 
nontechnical people as a language on which you could develop enterprise 
software. One of the things we have going for us is, because were founded 
by computer scientists, we dont have to defend our use of that 
programming language because its not Java," Kelley said.

"We have a wonderful ability here to choose the right tool for the job. 
We have components that are written in Java, in C++, in Python, and Ruby 
and Perl. [Python is] definitely viewed internally here by some of the 
best computer scientists in the world, people from MITs AI [artificial 
intelligence] and CS [computer science] labs, as enterprise worthy," he 
said.

Indeed, ITA has to defend its ability to meet its SLA (service-level 
agreements) against the Python-based technology.

"So we think, absolutely, that its ready for prime time," Kelley said. 
"What were doing is saying to a billion-dollar business, Yes, we can 
write components in this particular programming language, and they will 
keep your airline running."

Adrian Holovaty, a developer at Washingtonpost.com and the creator of 
Django, a Python Web development framework, bristles at the criticism of 
Python as possibly not being ready for the enterprise.

"The word enterprise in this context is mostly meaningless to me," said 
Holovaty in Chicago. "Its really just a marketing word that has no basis 
in logic."

Holovaty pointed to Google and YouTube, saying that it "doesnt get much 
higher traffic than that. Personally, I have direct experience using 
Python as my primary development language daily at my day job at 
Washingtonpost.com. Its a fantastic language that I couldnt live 
without," he said.

Moreover, when ITA hires new people, the company likes to hire those with 
Python experience "because weve had a lot of luck with Python people 
having a lot of core problem-solving and system-building ability," Kelley 
said.

He said it is pretty easy to find Java or C programmers who are good at 
line coding but not generally good at problem solving. "Its much more 
unusual for us to find people who can analyze a problem domain and then 
implement a solution where they cross a bunch of problem domains," Kelley 
said.

Python developers typically can, he said.

Meanwhile, getting off the mainframe will afford Air Canada all kinds of 
productivity and cost benefits, including lower cost of maintenance, 
better ability to integrate with modern architectures, and the ability to 
add components and enhancements more easily than with the mainframe, 
Kelley said.

http://www.eweek.com/c/a/Application-Development/Python-Slithers-into-Systems/
0
enterprise
6/27/2012 1:03:17 AM
comp.databases.pick 5449 articles. 2 followers. ttrroonniicc (5) is leader. Post Follow

0 Replies
1104 Views

Similar Articles

[PageSpeed] 23

Reply:

Similar Artilces:

Some "pythonic" suggestions for Python
I love Python, and it is one of my 2 favorite languages. I would suggest that Python steal some aspects of the S language. ------------------------------------------------------- 1. Currently in Python def foo(x,y): ... assigns the name foo to a function object. Is this pythonic? Why not use the = operator like most other assignments? Define function objects as "function"s, let users put them where they want to. Get rid of lambda, get rid of def, only use = for assignments. foo = function(x,y) x+y*2 # Example S language code bar = foo bar(3,4) m = lapply( s, foo ) bb = lappl...

"which python" as a python command?
Hello, I'm trying to find out in a script where the location of the current python is. (I'm writing an installer script in python for a simple server application, so i'm going to do a find-replace in a bunch of files to give them the absolute path of the python binary. One thought might be to use the subprocess module, run "which python" as a subprocess, and then peek at stdout, but that seems way too complicated. Is there a simple solution for this in just a few lines of code? Cheers, Evan chardish@gmail.com wrote: > Hello, > > I'm trying to find out in...

"#!/usr/bin/env python" vs. "#!/usr/bin/python"?
Hello I've seen both shebang lines to run a Python script on a *nix host: #!/usr/bin/env python #!/usr/bin/python What's the difference? Thank you. Gilles writes: > #!/usr/bin/env python > #!/usr/bin/python > > What's the difference? Not much if your python is /usr/bin/python: env looks for python and finds the same executable. When python is not /usr/bin/python but something else that is still found by your system, /usr/bin/env still finds it. For example, in a server where I work, python3 is installed as something like /opt/python/3.2...

Python 3000 and "Python Regrets"
I just came across the slides for Guido van Rossum's "Python Regrets" talk, given in 2002. It worries me that much of my Python code would be broken if all of his ideas were implemented. He doesn't even like 'print'. Of course, I am not qualified to argue with Van Rossum about the direction of Python. When is Python "3000" expected to appear? Is there a list of expected incompatibilities with Python 2.3? Are serious Python programmers already taking care to avoid using Python features that may disappear in Python 3000? beliavsky@aol.com wrote: > I just ...

Python wraps its coils around the enterprise / "Why python?" Register 6/18
Open... and Shut The enterprise, long the stodgy bastion of mainframes, Oracle databases, and Windows servers, is starting to look a lot more like the consumer technology companies that eschew it. As enterprises embrace the web as a way to conduct business and manage employees, they're embracing the very technology stacks originally made popular at Facebook, Google, and other consumer-facing web properties. On the programming language front, while Java and C++ aren't going away anytime soon, PHP and Python have established themselves as first-class citizens in the enterprise, with Python growing at a much faster rate than the other dominant languages, including PHP. The question is "Why?". Java and .Net continue to rule the enterprise roost, but PHP and Python adoption is exploding relative to these safe standbys, as measured by Indeed.com job postings: http://www.theregister.co.uk/2012/06/18/scripting_languages_in_the_enterprise/ This isn't surprising, given that the web belongs to such lightweight scripting languages, and even old-school enterprises increasingly do business on the web. In a recent UBM TechWeb "State of PHP in the Enterprise" survey, a full 50 per cent admitted to already using PHP with the remainder planning to use the dynamic programming language in the near future. And while the functions for PHP apps were diverse - content management (50 per cent), database/system administrati...

I don't undestand why sometime python (or other) add "tmpWvk7zy" (tmp + random string) after "buildout-eggs" in path of python script
Hi, first, I think that my question is generalist and don't impact only zopeproject and/or Paste package. Instance, when I trace (debug) some scripts, its name is "/home/harobed/ buildout-eggs/tmpWvk7zy/PasteScript-1.3.6-py2.5.egg/paste/script/ serve.py" instead of "/home/harobed/buildout-eggs/PasteScript-1.3.6- py2.5.egg/paste/script/serve.py". I don't understand why and who append "tmpWvk7zy" after "buildout-eggs". I don't know if it's related with python thread support. This trouble is very not useful to debug because pdb can'...

New Python book, "Learn Python Quickly"
Hi All, You may be interested in my latest book "Learn Python Quickly". It's a Kind= le book but is specifically designed to be used with any of the free-to-dow= nload Kindle Reading Apps. What's special about the book is its comprehensi= ve glossary and the numerous in-text internal hyperlinks to topics in the g= lossary, allowing the reader to quickly jump to glossary topics to clarify = the terms used in the text. The book can be followed by those with zero prior knowledge of the language= and very little general language experience, but leads the reader in ea...

ActiveState Python Together with "Regular" Python) ((DLE)
I installed "Python" 2.5 a few months ago with IDLE, and decided I'd like to try windowpy from ActiveState. Is having both of these installed going to cause me trouble? -- W. eWatson (121.015 Deg. W, 39.262 Deg. N) GMT-8 hr std. time) Obz Site: 39� 15' 7" N, 121� 2' 32" W, 2700 feet Web Page: <www.speckledwithstars.net/> On Jan 12, 2:00=A0pm, "W. eWatson" <notval...@sbcglobal.net> wrote: > I installed "Python" 2.5 a few months ago with IDL...

"Full stack python" should be linked on python.org
--089e0118313a370fb604ff1e6ae2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi! Anyone shares my opinion that www.fullstackpython.com should be referenced here <https://www.python.org/about/apps> or at least here <https://wiki.python.org/moin/WebProgramming> ? What do you think? It's great source for python web newbies (and not only). --=20 Tymoteusz Jankowski tel. 698 142 927 email: tymoteusz.jankowski@gmail.com email do efaktur: tymoteusz.jankowski+fak@gmail.com Je=C5=9Bli wysy=C5=82asz mi pliki biurowe (dokumenty,...

New Python book, "Learn Python Quickly"
Hi All,=20 You may be interested in my latest book "Learn Python Quickly". It's a Kind= le book but is specifically designed to be used with any of the free-to-dow= nload Kindle Reading Apps. What's special about the book is its comprehensi= ve glossary and the numerous in-text internal hyperlinks to topics in the g= lossary, allowing the reader to quickly jump to glossary topics to clarify = the terms used in the text.=20 The book can be followed by those with zero prior knowledge of the language= and very little general language experience, but leads the reader...

"monty" < "python"
>>> "Monty" < "Python" True >>> "Z" < "a" True >>> "Monty" < "Montague" False What's the rule about that? Is it the number of letters or what? thanks --Apple-Mail=_1762AE25-63ED-40EB-876D-A7D495818318 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii =46rom the docs[0]: "Strings are compared lexicographically using the numeric equivalents = (the result of the built-in function ord()) of their characters. Unicode = and 8-bit strin...

Does Python have equivalent to MATLAB "varargin", "varargout", "nargin", "nargout"?
Thank you in advance for your response. Dmitrey openopt@ukr.net writes: > Thank you in advance for your response. And those do ... ? -- Jorge Godoy <jgodoy@gmail.com> Where you would use varargin and nargin in Matlab, you would use the *args mechanism in Python. Try calling def t1(*args): print args print len(args) with different argument lists Where you would use varargout and nargout in Matlab you would use tuple unpacking in Python. Play with this def t2(n): return tuple(range(n)) a, b = t2(2) x = t2(3) On Feb 18, 12:58 pm, open...@ukr.net wrote: > Th...

What does """ means in python?
For string, one uses "" to represent string. Below is a code fragment that uses """ instead. cursor.execute("""SELECT name, phone_number FROM coworkers WHERE name=%s AND clue > %s LIMIT 5""", (name, clue_threshold)) What does """ means in python? In article <72a7dd52-7619-4520-991e-20db7ce55ba3@googlegroups.com>, Sam <lightaiyee@gmail.com> wrote: > For string, one uses "" to represent strin...

Vote to Add Python Package "pubsub" to the Python Standard Library
I vote for adding the Python package "pubsub" to the Python standard library. It has recently been added to wxpython (replacing the old wx.lib.pubsub package), but it has application to non-gui programs as well. For more information see: <http://pubsub.sourceforge.net/>. In article <6b9d2898-4166-40b4-9016-dc55dee77d00@q33g2000vbt.googlegroups.com>, Tom <tom.browder@gmail.com> wrote: > >I vote for adding the Python package "pubsub" to the Python standard >library. It has recently been added to wxpython (replacing the old >wx.l...

python is a python
python is a python ...

"where" in python
I am a newby in Python and I'm first looking for equivalent to things I already manage: IDL. For example, I want to plot a sub-set of points, selected from a bigger set by applying some filter. In my example, I want to select only the values > 0. I succeed to write 5 different ways to do this, which one is the more efficient, the quicker, the more Python? It seems the 4th method give wrong results, but I don't know why... Thanks for your tips, Christophe ------------------------------------------------------------------------------------------ import pylab as pylab import numpy as n...

"python exe" and "py plugins"
Hi, first of all ; sorry for my poor english ; i'm french ... and i hope you can understand below I use python (and wxpython) on a win32 platform, to build a simple "home theater pc". I want to release it in a package (with all needed to run) so i use (the wonderful) py2exe to build it ... it works like a charm ... nothing to say but, i'd like to make my program "plugin'able" ... so i ask myself (and you too ;-), if i could do that : - release all "core program" in an exe (with py2exe) - release the plugins in ".py" files ... and distribute...

Python "with"
This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig890661CB4CFFEFF7894371C5 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi, I'm looking for a construct that's similar to (Turbo) Pascal's "with" statement. I read about the Python's new "with" statement, but I was dissapointed to learn that it does something different (I still don't see how it's better than try..except..finally, but that's not my question= ). Is there something similar to what I want that's Pythonic enoug...

"Distributed" database in Python
Greetings. I'm looking for a "distributed" database. (I'm not sure if distributed is the correct terminology though). My problem is this; I have a client application which once in a while needs to sync with a central database. (And of course the client -databases might be updated locally etc). Are there any other resources you can recommend me? (I have basic RDMS knowledge (MySQL)). On Mon, 15 Mar 2010 08:49:34 +0100, David Tynnhammar wrote: > Greetings. I'm looking for a "distributed" database. (I'm not sure if > distributed is the correct termino...

"**" in python
--001a113ce16c0b326a05088ff227 Content-Type: text/plain; charset=UTF-8 Hello, I came across an example that showed the following: Wxy**2 What do ** mean here? Thanks. --001a113ce16c0b326a05088ff227 Content-Type: text/html; charset=UTF-8 <div dir="ltr"><div><div>Hello,<br><br></div>I came across an example that showed the following:<br><br>Wxy**2<br><br></div>What do ** mean here?<br><br>Thanks.<br></div> --001a113ce16c0b326a05088ff227-- ...

[ANN] Courses in Colorado: "Introduction to Python and Python for Scientists and Engineers"
Python Course in Golden, CO, USA ================================ Introduction to Python and Python for Scientists and Engineers -------------------------------------------------------------- June 3 - 4, 2011 Introduction to Python June 5, 2011 Python for Scientists and Engineers Both courses can be booked individually or together. Venue: Colorado School of Mines, Golden, CO (20 minutes west of Denver) Trainer: Mike M�ller Target Audience --------------- The introductory course is designed for people with basic programming background. Since it is a gener...

Moving from Python 2 to Python 3: A 4 page "cheat sheet"
I've produced a 4 page document that provides a very concise summary of Python 2<->3 differences plus the most commonly used new Python 3 features. It is aimed at existing Python 2 programmers who want to start writing Python 3 programs and want to use Python 3 idioms rather than those from Python 2 where the idioms differ. It uses Python 3.1 syntax since that looks like being the standard for a few years in view of the language moratorium. The document is U.S. Letter size but will also print fine on A4 printers. It is available as a free PDF download (no registration ...

Moving from Python 2 to Python 3: A 4 page "cheat sheet"
I've produced a 4 page document that provides a very concise summary of Python 2<->3 differences plus the most commonly used new Python 3 features. It is aimed at existing Python 2 programmers who want to start writing Python 3 programs and want to use Python 3 idioms rather than those from Python 2 where the idioms differ. It uses Python 3.1 syntax since that looks like being the standard for a few years in view of the language moratorium. The document is U.S. Letter size but will also print fine on A4 printers. It is available as a free PDF download (no registration ...

Python help: Sending a "play" command to quicktime, or playing a movie in python
I'm sure this is a simple problem, or at least I hope it is, but I'm not an experience programer and the solution eludes me. My realm of study is the behavioral sciences. I want to write a program to help me record data from movie files. Currently I have a program that can record the time of a keystroke so that I can use that to obtain frequency, duration and other temporal characteristics of the behaviors in my movies. What I really want, is a way to start playing the movie. Right now I have to play the movie, then switch to my program. I would love it if it were possible for me to ...

Web resources about - Python in the enterprise: "Python Slithers into Systems" / Why Python? (eweek 2007) - comp.databases.pick

Resources last updated: 2/20/2016 6:59:34 AM