The New Joyent
Summary
Joyent Container Services will transform the company. It will run Docker containers along side Joyent containers as equal citizens . The Docker containers will run natively in Joyent cloud architecture will add huge value for Docker users.
Joyent will minimize and eventually eliminate the gap between containers in development and containers in production. The Docker revolution is a blessing
Last, but not least, Joyent will open up and make products people will love and use, and not just admire like a picture in a Museum of Modern Art.
Joyent : Cloud and Containers DNA
This is part 2 of this story. But I covered Joyent many times in this blog.Four years ago, in August 2011, I wrote the article Net Promoter Score For four Cloud IaaS providers. Joyent had highest score. Joyent was viewed as the coolest IaaS cloud company
Fig. 1: August 11, 2011: Joyent by far was the winner |
Brian is very technical, very precise and uses metaphors. Each of his presentations resembles an artistic performance
Miha: I read your blog post called Predictoria 2015. By the way, I could not find the word in any dictionary...
Bryan: I invented it (smile). I like a restaurant called Osteria in Palo Alto This is a place where fifteen years ago my colleagues in kernel development at Sun and I we would get together to form predictions for the coming year. So Osteria inspired Predictoria.
There is a good chance that Predictoria will become a new word on the Valley jargon and Bryan will be credited for it.
Docker Containers
Predicteria 2015 first bullet is:
2015 is the year of the container. ... Thanks to Docker, the world is finally figuring out that OS-based virtualization is actually highly disruptive (better performance and lower cost!), and I think that this realization will become mainstream in 2015. I don’t think that Docker will necessarily be the only substrate,The second bullet is even more interesting
The impedance mismatch between containers in development and containers in production will be a wellspring of innovation. Currently, containers have a ton of developer enthusiasm — but limited production deployments, in part because of production concerns around security, persistence and network virtualization. But it’s a sure bet that there will be (many) players tackling the problems in interesting ways.Miha: This impedance mismatch ,can you explain how did you discover it?
Bryan: When I speak to a developer event, I ask people the audience: "How many of you have used Docker containers?" About one third to half of the s audience raise the hand. Then I ask: "How many of you have used Docker containers in production?" and I see just a few hands still up
__________________________________________________________
I did a little research on my own. I am not surprised that Docker has "tons of developer enthusiasm - but limited production deployments". Everyone talks docker, docker, docker. Everyone looks at the picture below and thinks. "This is Docker", easy
Fig. 2: Containers share OS versus VMs which need Hypervisors. |
Docker Blues
Stack Overflow is a question and answer site
for professional and enthusiast programmers. It is a natural site for
Docker developers
After I read this, I wonder if ever I want to dockerize anything on Windows. This is complicated. This is complex. This is not for a mainstream Data Center staff to handle.I've watched a ton of youtube videos and read all of the docker docs. However I still do not get a core concept that is stopping me from understanding docker. I am using windows and have boot2docker installed. I've downloaded images from docker hub and run basic commands. BUT How do I take an existing application sitting on my local machine (lets just say it has one file 'index.php', for simplicity). How do I take that and put it into a docker image and run it?Answers 1 to question 1
Your index.php is not really an application. The application is your Apache or nginx or even PHP's own server.Because Docker uses features not available in the Windows core, you are running it inside an actual virtual machine. The only purpose for that would be training or preparing images for your real server environment.Answers 2 to question 1
You'll need to build a docker image first, using a dockerFile, you'd probably setup apache on it, tell the docker File to copy your index.php file into your apache and expose a port.
Sample question 2Bottom line, the easy to use docker containers for production do not exist yet, unless one hires the top top developers,
Answer to question 2After reading the introduction of the phusion/baseimage I feel like creating containers from the Ubuntu image or any other official distro image and running a single application process inside the container is wrong. The main reasons in short:
- No proper init process (that handles zombie and orphaned processes)
- No syslog service
Based on this facts, most of the official docker images available on docker hub seem to do things wrong. ...Now the question arises which is the appropriate way to run an service inside docker container. Is it wrong to run only a single application process inside a docker container and not provide basic Linux system services like syslog? Does it depend on the type of service running inside the container?
Check this discussion for a good read on this issue. Basically the (semi) official line from Solomon Hykes and docker is that docker containers should be as close to single processes micro servers as possible. There may be many such servers on a single 'real' server. If a processes fails you should just launch a new docker container rather than try to setup initialization etc inside the containers. So if you are looking for the canonical best practices the answer is yeah no basic linux services. It also makes sense when you think in terms of many docker containers running on a single node, you really want them all to run their own versions of these services?That being said the state of logging in the docker service is famously broken. Even Solomon Hykes the creator of docker admits its a work in progress. In addition you normally need a little more flexibility for a real world deployment.
The Docker super-star, Solomon Hykes is French. He is a seductive dreamer:
...users nowadays expect apps to behave like the Internet: unattached to a machine, readily available, working the same no matter how you interface with them. This means software needs to be decoupled from the underlying machine -- "the app needs to be everywhere and nowhere,"This is an elegant thought, but the Internet today is not safe. Walter Isaacson, the author of Steve Jobs biography, wrote in the article from Time Magazine, January 19, 2015 entitled "Time to Build a More Secure Internet" . The Internet started from network built by Pentagon Advanced Research Projects Agency (ARPA), hence the network name, ARPANET. The idea was to have a network able to survive a nuclear attack. But the engineers who actually devised the traffic rules "anti-authoritarian to the core" were graduate students - many of them avoiding the draft during the Vietnam war, did not care about about the military uses of of the Net. Now Net's architecture makes it difficult" to control or even trace the packets that dart through its nodes" As a result, 40 million Americans had personal information stolen in cybercriminal attacks and the 2013 loss to the U.S. economy was a staggering $100 billion.
Just watch a viral video from 2010, The un-ignorable Internet to see what ARPANET looks like today. I imagine a docker container that has all packages of an application plus the intelligence built in on how run it. If this is the ideal place for docker as a platform ?
Solomon Hykes explains Docker can not produce the set of tools for every developer, because, in respect for human people, each developer is different and does things differently according to his beliefs and personal style. This is a superior thinking that will make Docker a winner for all developers in the world. Hence Docker in its' pure higher level abstraction can not be a production container, as is.
The corollary of this is that Docker in it's pure form is by definition insecure. As of today Security is a task for companies who have real enterprise customers. Joyent is one of those companies
Joyent and Bell Telephone Company
Although I know Bryan for many years, this is the first time we had a longer in depth conversation about his work.
I am reading a new book on Nicola Tesla by W. Bernard Carlson . Tesla talks about two ways to create inventions. The Edison style is
On the other side," it took the Bell Telephone Company decades to convince Americans that every home should have a telephone. Bell and his successor companies had to invent not only the telephone but also a marketing strategy that reflected the interests of users. In this sense, inventors “negotiate” with society."
I see Bryan Cantrill and Joyent as a company are more like Tesla style innovators. They had a consistence to provide cloud rock-solid Docker fits in their cloud and data center products, like a glove
I see Joyent's story similar to Bell Telephone Company a century ago. It may take a decade to develop a marketing strategy, that reflected the interest of the users. This is happening right now. I am not surprised visionaries like Peter Thiel invested in Joyent. I am not surprised Telefonica invested too, Because Joyent anticipated business success is now more credible than ever before.
Here is the original video
Miha: How is Joyent different as a participant in Docker revolution?purely experimental of which undoubtedly Edison is the greatest and most successful exponent. The moment you construct a device to carry into practice a crude idea you will find yourself inevitably engrossed with the details and defects of the apparatus. As you go on improving and reconstructing, your force of concentration diminishes and you lose sight of the great underlying principle. You obtain results , but at the sacrifice of qualityThe Tesla style described by Tesla himself
The inventor - and every reader of this blog has at least a tiny inventor DNA inside - knows on one side, "because nature does not readily yield up her secrets, one could say that an inventor “negotiates” with nature."My method is different. I do not rush into constructive work. When I get an idea, I start right away to build it up in my mind. I change the structure, I make improvements, I experiment, I run the device in my mind. It is absolutely the same to me whether I operate my turbine in thought or test it actually in my shop . It makes no difference, the results are the same. In this way , you see, I can rapidly develop and perfect an invention, without touching anything. When I have gone so far that I have put into the device every possible improvement I can think of, that I can see no fault anywhere, I then construct this final product of my brain. Every time my device works as I conceive it should and my experiment comes out exactly as I plan it
On the other side," it took the Bell Telephone Company decades to convince Americans that every home should have a telephone. Bell and his successor companies had to invent not only the telephone but also a marketing strategy that reflected the interests of users. In this sense, inventors “negotiate” with society."
I see Bryan Cantrill and Joyent as a company are more like Tesla style innovators. They had a consistence to provide cloud rock-solid Docker fits in their cloud and data center products, like a glove
I see Joyent's story similar to Bell Telephone Company a century ago. It may take a decade to develop a marketing strategy, that reflected the interest of the users. This is happening right now. I am not surprised visionaries like Peter Thiel invested in Joyent. I am not surprised Telefonica invested too, Because Joyent anticipated business success is now more credible than ever before.
How Joyent will adopt Docker Containers?
I ask the Casey Bisson, Joyent's new product manager this question
Joyent containers (Solaris/SmartOS zones) and Docker containers are very similar.
Joyent’s container technology originated a decade ago with Solaris zones, designed to provide multiple, isolated, yet complete operating system environments. This allowed more efficient use of hardware with few or no changes to application design.
Docker is a container technology that, ideally, isolates applications even further into micro-services. This is a significant innovation that could result in some exciting advances in application design and deployment practices.
Joyent’s Docker service will launch in beta in early 2015 combines these technologies to gain the best advantages of both.Casey hints that a beta Joyent’s Docker service will available before the end of April, that Bryan Cantrill mentioned as a release date.
Micro-services. What are they?
Fig. 3: Slide 9 screen shot Jerome Petazzoni slide deck (Docker Inc.) |
The slide is self-explanatory, But why we need Micro-services?
Fig, 4: Why Micro-services are useful? Jerome Petazzoni, slide 10, Docker Inc |
I like the Jeff Bezos "two-pizza rule". This is one of those ideas that it is so obvious that makes people say: "Gee, how that I did not notice this before?"
However it is worth noting: Joyent containers can run microservices independently of Docker. Joyent’s SmartDataCenter 7 (open source at https://github.com/joyent/sdc), released in mid 2013, is built on the micro-services pattern.
According Casey Bisson,
The Docker container service that we’re building now will run Docker containers along side Joyent containers as equal citizens in our cloud.
Both Joyent and Docker containers can run microservices, but Docker has done much to popularize microservices architectures. The patterns for containerized development and deployment that are emerging now are really exciting, and Docker deserves credit for promoting that.He expresses
We’re excited to see the growth in interest in containerization, and we think supporting Docker containers natively in our cloud architecture will add huge value for Docker users. The benefits include bare metal performance, ZFS, and DTrace, as well as the years of experience we have in running containers in production.
This is very cool
The company introduction video 2013
After I wrote this blog, I found on You Tube this 2013 Joyent high level video: It says:A big idea can change the world and the faster it can be shared, the faster it can go to workDocker will perfect the Joyent marketing strategy to "negotiate with society" in a way everyone can see the light. Joyent may become ubiquitous if the people understand exactly it does. As part of the negotiations with the society, the 2015 video must show why Joyent Containers solution in production is 10x better than the competition today. Why 10x? Because this is the criteria to be perceived as a zero-to-one product and company.
Here is the original video
Joyent's roots from Sun
Bryan: In Joyent we brought in the container technology from Sun. We at Sun were blessed. We saw containers long before Docker. Sun was making machines so big, selling well to customers to run simultaneously multiple application on one machine. By the end of 1990's the application codes became so complex, so we had no option but to virtualize the machine.
Miha: How did you do it?
Bryan: We did not come from a cloud direction. We came from a need for workload consolidation on a server that had to be secure all the way down to the bedrock
Note from Wikipedia ; "Solaris Container was any type of environment constrained by Solaris Resource Management, even when this didn't include the use of a Zone. Over time, common usage changed this to mean a Zone combined with Resource Management."
Miha: "Secure all way down to the bedrock" How we measure that?
Bryan: When Zones came around, we did a contest, by offering a $10,000 winner prize, to anyone who managed to break a Zone. The winner was Casper Dick, Sun long standing top security expert, He managed to find some crazy detail that he was able to exploit. But since then no one reported a breach of security. Solaris Zones were bedrock solid. That is the path Joyent containers are coming from. We have built Joyent based on that foundation.
Miha: Now Docker is coming.
Bryan: In the past half year, yes Docker was coming and it was embraced enthusiastically by all developers, who said: "Docker is great abstraction." because - in addition to packaged software - a Docker image contains also the dependencies. A Docker has the intelligence built in
Miha's Note: See Using Linux Containers to Support Portable Application Deployment
Bryan: The reason I came to Joyent, is because I believed in the cloud and I believed in the OS reservations. So Docker is seductive in its elegant abstraction, but it is not coming from having the rock solid container for usage in enterprises.We can run very well Docker on Joyent Public Cloud and on Joyent SmartDataCenter, These environments are rock solid, but we want more.
Miha: More?
Bryan: Until now Linux was a moving target, but it slowed down a lot. So we intend to run Linux application directly via Joyent Container Services on SmartOS. We will end this game of trying to convince customers to port their Linux apps to SmartOS
To complement what Bryan means here is a quote from Bill Fine, Joyent VP of Product and Marketing:
Holistic simplicity alone, however, isn’t enough to be able to claim that Joyent is the best place to run Docker. We also needed to provide an infrastructure container run-time environment superior to the good enough, “batteries included” option provided by Docker. So, we set out to seamlessly integrate Docker into Joyent SmartDataCenter, the container infrastructure run-time environment used today by Joyent customers to power their mission critical applications across thousands of infrastructure containers in the Joyent Public Cloud, and the foundation for container-based, private clouds at some of the world’s most recognizable companies.
Now, through our work (in the (link: https://github.com/joyent/sdc-docker text: open)) to extend the Docker Engine to SmartDataCenter and enhance SmartDataCenter with Linux Branded Zones, we are nearing our goal of providing “Dockerized” Linux applications a run-time environment that is secure, delivers both bare metal performance and cloud economics, provides integrated virtual networking and virtual storage, and is available via a public cloud service or private cloud software download.According to Bryan, this will happen at the end of April, 2015. "There is no question that we will get there" he says
Miha: Lets say you deliver the Joyent Container Services as expected, successfully. What does it mean to the user? The user will say: "I am going to use Joyent, because of.what?"
Bryan: There are a bunch of reasons. I am giving you the one that I think will be most compelling to people. When you blow up the hardware virtualization layer - there is no hardware virtualization layer in docker - that means you have now a global visibility across the entire data center or cloud. This realizes the promise of cloud computing. You create a docker host, a machine, and then you create the containers on that machine. Because this is a hardware virtualization machine, when you run out capacity, you create a second docker host that has the same global visibility as the first one.
As I wrote in my blog post of Dec 15, 2014 Joyent is betting that developers that build applications using Docker containers would much rather attain higher levels of performance using bare-metal servers rather than relying on hypervisors to access virtual machines.
Miha: Assume I create my docker machines, one, two, three, as needed. How is this different from the big players AWS , Google and so on?
Bryan: Because in order to give you, the user a global visibility, it looks to as you are a gigantic virtual computer. You have to administrate the virtual computer and the containers. In Joyent, you only worry about the containers. We are the equivalent of the hardware hypervisor, we offer stack simplicity, where simplicity itself is the power
Miha: And now (end of April 2015) one can run Linux application on Joyent,
Bryan:This is huge as we do not have to run after people to convince them to port from Linux. We run Linux apps without any degradation in performance on Smart OS
_____________________________________________________________
What kind of a production container Joyent provides?
Bryan jotted down this on the white boardFig. 5: Three bullets for Joyent containers |
- Bedrock solid security,
- Power to operate by using optimized SDN (Software Defined Networking)
- Revolutionary performance: you can do more work with less infrastructure costs. You can run the same data center created in AWS or Google to to 70% less costs
I will cover these three bullets more in detail after the launch of Joyent Container Service in May 2015
User Experience
This is NOT interface design, although it includes it. This is about what people sentiment is when using the product
- Ease of use, aka UX (user experience) for mainstream sysadmins and engineers or even plain end users (the Know-nots) in addition to expert docker developers (the Knows)
- Joyent's production containers can create a habit as defined by Nir Eyal
I looked up Casey Bisson, - the new Joyent PM - profile and I read:
- The way we reach user hearts and brains is via Habits What is a Habit? ("automatic behaviors triggered by situational cue; things we do with little or no conscious thought"). A habit-forming company ... links its services to the users' daily routines and emotions"
Joyent will open up and make a product people will love and use, and not just admire like an art object in Museum of Modern Art - which we are not allowed to touch.I am an engineer who enjoys making products that are easy and fun to use, social, and sticky.
__________________________________________________________
Comments