Monday, March 18, 2013

关于IaaS的四个误解和猜想


IaaS(Infrastructure as a Service),指基础设施即服务,消费者通过Internet可以从完善的计算机基础设施获得服务。基于Internet的服务(如存储和数据库)是IaaS的一部分。Internet上其他类型的服务包括平台即服务(Platform as a Service,PaaS)和软件即服务(Software as a Service,SaaS)。PaaS提供了用户可以访问的完整或部分的应用程序开发,SaaS则提供了完整的可直接使用的应用程序,比如通过Internet管理企业资源。
 
误解一:IaaS就是卖资源
 
现在流行的一个观点:IaaS就是卖资源,传统IDC是卖带宽和机架,云计算加上服务器,最多就是把这些资源通过虚拟化技术拆成散了零卖。
 
在我们看来,云计算分为3个层次:
 
1、资源层:这是IaaS提供服务的物理基础,主要包括计算资源、存储资源和网络资源,以及必要的电力资源、IP资源等。这一层主要通过规模采购和资源复用的模式来赚钱利润,利润不高。
 
2、产品层:这是IaaS的核心,IaaS运营商根据客户的各种不同需求,在资源层的基础上,开发出各种各样的产品。比如存储产品、消息产品、CDN(内容分发网络)产品、监控产品,而每一种产品又会根据场景和需求的不一样,做针对性的改造优化,形成特定类型的产品。产品层是不同IaaS的竞争力体现之处,这些产品在不同角度满足了用户的不同需求。这些产品是IaaS利润的主要来源,也是IaaS的重要黏性。像国内的阿里云就提供了云服务器和负载均衡、云监控等产品,Ucloud提供了块设备存储的UDisk、云数据库的UDB等产品。
 
3、服务层:在产品层之上,IaaS运营商还会根据用户的需求提供一些更多的增值服务,这部分从商业角度不一定赚钱,但却是用户使用IaaS的重要条件。比如为用户提供数据快递服务,在中国则必须包含网站备案服务,还有安全服务等等。
 
误解二:IaaS没有什么技术含量
 
在各种媒体的宣传把云计算神话了,认为云计算无所不能,把云计算的技术看的很高端,技术含量特别特别高。而不少从事过技术的人呢,则认为云计算没有什么技术含量,已经有类似Openstack、Eucalyptus、cloudstack等不少开源系统可以直接部署使用,
 
或者基于KVM、XEN等开源虚拟化系统上做一套管理系统。
 
的确,随着云计算的快速发展,已经涌现出一大批开源的云计算平台,各大公司也都在积极支持开源软件的发展。但是即使发展快如Openstack,目前也没有很成熟的成功案例,因为IaaS的技术复杂度很高。
 
1、从基础上看,IaaS要实现多租户,弹性,稳定可靠和安全,必须要进行资源的池化管理,也就是把资源通过虚拟化技术形成资源池,然后根据用户的需求弹性分配,同时确保安全和隔离。之前提到资源主要包括计算、存储和网络,因此这里要做计算的虚拟化、存储的虚拟化和网络的虚拟化。
 
计算的虚拟化目前主要是通过XEN、KVM、Vmware等软件实现,相对比较成熟,但是在性能优化、稳定性方面还有很多工作需要完善。

存储的虚拟化目前还没有一个比较成熟的开源系统,如果文件型存储,则主要根据GFS的思路进行编码实现,必然Openstack的swift,而块设备存储则各显神通了,有nova-volume,国内盛大云、UCloud都各自实现了块设备存储。另外最近国际上非常流行的是SDS(软件定义存储),实际上也是实现了存储的虚拟化。
 
2、在虚拟化管理之上,是大规模的调度管理,如何能快速找到合适的资源满足用户的需求,如何能根据监测的数据,动态调整资源,如何能动态迁移业务,如何防止雪崩。如果是10台机器,这可能很容易,如果是1000台机器,这是一个问题,如果是10000台以上的机器,那就是个大挑战了。而云计算,要实现解决规模化的能力,就必须解决大规模的调度问题。这里的难度和挑战相当的大。
 
3、性能和安全问题同样也是IaaS的挑战,如何确保一个用户的高需求不影响其他用户,如何防范一个租户入侵其他租户,如何防止一个用户被攻击不影响其他用户,这里需要我们更加深入的研究。
 
更多的产品研发,如上所说,IaaS除了资源之外,更关键的是产品,必须根据用户的需求研发出更多满足特定需求的产品。这就会涉及到系统、网络、数据库、应用和安全的方方面面,对IaaS开发和运维的要求都非常高。
 
综上所述,IaaS的技术门槛是比较高的,并不是没有技术含量。
 
误解三:IaaS是不安全的
 
业界都在质疑云计算的安全性,特别是Evernote的安全事故让更多人担心IaaS的安全问题。
 
以我十多年的安全从业经验来看:
 
1、没有绝对的安全,任何系统都有可能会被入侵;
 
2、安全是相对的,关键要看IaaS模式下和传统托管模式下哪种更安全。因此假设一个公司规模很大,有专业的安全团队,比如腾讯、阿里、百度等公司,则肯定他们自己部署会安全很多,但是如果假设是一个小的创业公司,不可能有很专业的安全人员,IaaS的服务提供商则可以更专业的提供安全保障。
 
误解四:公有云只能服务中小企业
 
由于大企业对稳定性的追求,以及对旧有投资的保护,的确公有云的用户大部分都是从小企业开始的。目前不管是国内还是国外,中小企业还是云计算的主要用户。
 
但是随着云计算的发展,我们也发现了几个趋势:
 
1、一些在公有云上成长起来的公司,长成大型企业后也依然在使用公有云,比如Netflex,因为他们发现如果自己要建立基础架构所需要的人力物力依然很大,困难依旧很多,还不如将精力投入在他们自己擅长的领域内。
 
2、传统的一些大公司,他们也逐步开始尝试将一些非核心业务或者新业务部署在公有云上,甚至将IT部门裁员,全部转移到公有云平台。比如兰博基尼、宝马等汽车公司,他们已经借助云计算来降低成本,借助云计算提高他们的设计渲染能力。
 
其实从电力发展的情况来看也是这样的,在现代这样的社会,我们很少看到有企业会自己建立发电厂,而不使用电网。相信随着云计算的发展,云计算取代IDC或者取代自己运营也是必然的趋势。
 
四个猜想:

一、IaaS增长快速
 
IaaS公共云服务将是增长最快的公共云服务类别。预计全球2013年IaaS的市场规模将达到80亿美元,其中AWS(amazon web services,亚马逊公有云服务)预计能达到25-28亿美元,Rackspace收入16-19亿左右,IaaS占35%,超过6亿美元,而被Verizon收购的Terremark收入将超过4.5亿以上,另外像Joyent,Savvis,GoGrid,Dimension Data等公司都会有一定的收入增长。

相比全球,中国的IaaS市场基数小,但增长速度更快,预计13年中国纯粹IaaS市场规模将会超过1亿美元,并逐步形成3-4家规模比较大的IaaS运营商。
 
二、大中型企业将开始接受云计算
 
正如上面所说,大中型企业已经开始尝试将一些非核心业务部署在公有云上。从AWS的客户列表中,我们可以看到财富500强企业或多或少都在使用亚马逊的公有云进行测试或者开发,其中有些公司在上面运行真正的应用,比如纳斯达克,兰博基尼等公司。
 
这种变化将会对传统的IT厂商,IBM、HP、Oracle产生很大的威胁,因为传统大中型企业是这些IT厂商的大客户。
 
而从AWS的发展来看,这也必然是云计算公司的发展目标,我相信在未来的3-5年内,云计算将会开始蚕食传统IT厂商的市场,而2013年就是一个开始。
 
三、SDX技术(软件定义一切)将会快速发展
 
传统的硬件厂商采用卖盒子的模式,设备是不开放,无法动态管理的,因此造成了很大的浪费和管理成本。
 
而软件定义的思想(Software Defined Everything)将黑盒子开放出来,使得数据和控制分开,能够更灵活的管理和调度,会成为后续发展的主流。
 
2013年的开始,我们就看到了软件定义存储(Software Defined Storage),软件定义网络(Software Defined Network),软件定义数据中心(Software Defined Datacenter)等一系列大的投资和收购行为。
 
我预计在2013年,SDS、SDN的产品和方案将会开始落地,相关的技术将会快速发展。
 
四、云计算改变相关产业链
 
随着云计算技术的发展,特别是应用的不断落地,云计算已经在很多行业发生了影响和变革,主要包括:
 
1、创业者:云计算极大地降低了创业者的基础设施门槛,使得创业者只需要关注他们的核心优势,发挥他们的核心优势。这对于一些原来不从事互联网的团队非常方便利用互联网创业,将会催生很多内容型、O2O型的创业公司。特别是2013年,国家降低注册公司的门槛后,越来越多的创业公司将会成批出现。
 
2、投资行业:由于云计算降低了一次性的服务器网络投入,使得创业者对天使的资金需求降低,可以很迅速的开发产品试水。如果产品好,则利用云计算可以快速成长,如果产品不好,则可以马上转行。因此投资的模式从传统的天使转向超天使,甚至可能不需要A轮,业务发展好就可以直接进入B轮。
 
3、服务器产业:传统模式下,服务器通过渠道销售给中小企业,渠道会是其中很重要的一环。在云计算模式下,中小企业将不用采购服务器。因此IaaS运营商将取代中小企业成为服务器的采购者,这对传统的服务器厂商和渠道产生较大的影响。
 
【作者:季昕华,前盛大云CEO、Ucloud.cn创始人】

Sunday, March 10, 2013

How to manage new department?

Question:
 I was recently appointment as a new head of a department.

The thing is the out going department head is transferred to another department, which is on the same floor, and still have great influence.

The out going head only taught me some of the works she used to perform and some unfamiliar work I still need to figure out myself. She was not happy with the transfer and also bad mouth about me, which I heard from my colleague. I felt that the things that she teach me was sometimes wrong and does not give a clear solution. So I have to use my own judgement.

The problem I faced is that my experience is not as experience as my staffs work under me because some of them have work there for more than 10 years. While I work there for around 6 months only. I still need them to teach me some work.

Besides that, I am also not clear about what work my staff are performing. Thus, I asked them to fill in a work survey questionnaire and give a deadline to it. At the end, no one reply me. Besides that, I also want to implement new procedure to better monitoring of work progress. One of them answer me, it is a waste of time.

How to manage the department when you are not the most experienced?

How to introduce new procedures with the staffs follow through?

How to instill confident in staffs that I could lead the department well and listen to me instead of to the former department head?




Answer: 
Well you have your work cut out for you. But this is not impossible. I will try to answer your questions.

How to manage the department when you are not the most experienced?


First off, managing a department is not so much about knowing exactly how to perform the work of your direct reports as it is about knowing how to lead, direct and manage people. You must make sure that the employees are respecting your authority. This is tough because as the newbie you don't want to come in looking like a big shot but at the same time these guys blowing you off and not resopnding to you is disrespect.

I would suggest partnering with your HR Manager and ask how to best handle these associates who are ignoring your deadline requests. That is one of the things HR is there for - to coach and direct new managers.

I think the survey was not the best approach because as a new manager you need to instill more of a one on one apprach. I suggest setting up one on one meetings with each of your new employees and get to know them. Make this more about rapport building vs just learning their job all at once. After the initial one on ones then I suggest setting up more time with each of them AT THEIR OWN DESKS And observe and ask them questions about what they do.

This is not going to happen overnight. You must lead by example and these people will eventually look to YOU for guidance vs the old dept head. You cannot become a manager and expect respect from day one. You have to earn it. Spend LOTS of one on one time with these folks but don't do it trying to be this big authority figure try to just get to know them as people first. Then when they respect you they will automatically want to listen to your direction. I would hold off on big changes right away because these guys need to get used to the management change first. Over-zealous new managers often make the mistake of thinking they need to come in and change everything around all at once. Bad idea. Change should come gradually.

I bet these employees have good ideas too, just as you do. In dept/team meetings I suggest you ask them for their input. Ask them what changes they would make and if you can implement some of their suggestions. This way they will see you are a member of the team as well and not just trying to play role of head hauncho.

MY management style is such that I work for them vs they work for me. My job as a manager is to get the most work from the team as possible in as efficient way as possible. Having this mindset I do not dictate I instead implement ideas and suggestions my team brings up and when I make suggestions for process improvement I always get their feedback first. No one likes the managers that make a lot of process improvements and fail to see the whole picture. Sometimes things on white paper don't look as good when you are the employee having to carry it thru.

And when I say I view it as I work for them I don't mean they dictate to ME what must happen it means that I see them as my team and a manager is ONLY as good as the team they manage. On performance reviews for managers, you can be the best model employee on earth but if your team is not producing, and if your team feels their environment is stifling to their advancement or not fostering a team atmosphere then they are going to ding the heck out of you on employee sensing surveys. Bad sensing surveys are a manager's worst nightmare. And on your own reviews if your team is not yielding desirable results that impact the bottom line then you are doomed.

So adopt the attitude that you work for them and let them know that you want to hear their ideas and will implement what you can. Take the time to get to know them. During one on one's ask about their kids, their families, what they like to do. Try to create some small talk with them. Vist out on the floor often and take a real active interest in their work. Compliment and praise where it is due. Do not praise if it is not warranted or then your words won't mean much but praise and praise often to your high performers. Everyone likes to be recognized.

You can also make work fun by running contests and team oriented games in team meetings. Bring some snacks in and make work fun.

How to introduce new procedures with the staffs follow through?


As I said I would not do that yet. You don't even know these people yet. You said yourself you are not familiar with their jobs. How can you make procedure changes without knowing specifically what the CURRENT procedures are? New managers always have the best of intent when making changes but if they don't know what the current process is, how can they improve it? Schedule one on one meetings to get to know these folks first. Then schedule time with each one to sit at their desks and learn what they do. Ask for their input. When you finally feel you have gotten your arms around current procedures and what each person is responsible for then you can start making improvement changes. ASK for and IMPLEMENT as many of their ideas as you can, if they are good ones. No one knows that work better than the employee.

How to instill confident in staffs that I could lead the department well and listen to me instead of to the former department head?

By employing some of the suggestions I gave you above. Respect will come when respect has been earned. I hate to compare it to a parent/child relationship since we are all adults but in a way it is the same concept. A child respects the parent who earns it. An employee respects a manager who earns it. The title alone will not automatically be commensurate with clout and respect. That former manager has it because she was there a long time and these people grew to trust her apparently. You have to make them trust you, and they can't trust that you know what is best for them until you know exactly what it is they do.

Take an active and sincere interest in their work, in them, and ask for their input and actually use it, and you will gain the respect you are looking for.

How to manage and control IT support department?

Question:
Is it possible to manage IT maintenance operations like a project, with typical project management mechanisms including scope, time, and cost planning? In our project we experience difficulties in such a management of our IT infrastructure support department. We don't know how to define their scope, how to control it, and how to make sure that the work is done. They are not developing any software but organizing our server space. Sometimes (and very often) their mistakes severely affect the entire project. I'm interested to find some formal or semi-formal instruments of this IT department management and coordination with the rest of the business.

Answer:
There is a danger in trying to use PM methodology to manage an operational process. PM methodology - waterfall, agile, Prince2, whatever - is designed to deal with temporary endeavors.

I suggest you build the processes you need to make thinks happen in the support department.

If you are unfamiliar with process development, you can find all kinds of resources on line. The basic steps are;

    make a list of everything your department needs to do
    organize it into process groups
    document the steps for each process
    start improving the processes

------------------------------------------------------------------------------------------

The main problem with maintenance and support teams is that it's usually really hard to plan their work in reasonable way in any longer time span.

If we define maintenance team as one which reacts either to problems within project (bugs, issues, inquiries) or to requests submitted by others (client, other teams) it's more like dealing with constant priority changes. If there's critical bug submitted we likely deal with it in the first place before moving to regular stuff. If there are other (major or minor) bugs which have solution deadline they also go up through priority list as the deadline approaches.

However even though it's hard to plan team work in any detailed way as the plan is going to change a number of times, you still can organize process in a way which just takes such situation as given. A very good method to try here is Kanban as it doesn't force the team to plan work up front but allows to react to priority changes in a neat way. See http://blog.brodzinski.com/2010/11/beauty-of-kanban.html as example of how Kanban in terms of reacting for frequent priority changes.

Kanban also does a very good job in terms of visualizing what the team is doing now, what they're going to do next, any problems they might have, individual responsibilities for tasks etc. In given situation not only may it help you to track their work but also help them to see what they're really have on the plate.

Also with Kanban it doesn't really matter what kind of tasks the team deals with as it wasn't designed with a purpose of applying it to software development only, so it can be perfectly used for the team dealing with infrastructure.
-------------------------------------------------------------------------------------------

This may be considered as a project itself " IT Operations Alignment".

In order to manage the service delivered by the IT Support Team you will need liaise with the Team Lead to understand the following:

    Current Process Logic for IT Operations (planning, approval requirements, etc...)
    Current Service Level of Agreement (SLA) to deliver solutions
    Resource Availability (remote teams, on-site testers, etc...)

Once you have gathered all relevant information regarding their processes try to match these with your own ones and identify any gaps or areas of improvement.

    Document Agreed Business Process and Operations/Projects - defining the scope of your business/project and where their support must imply.
    Agree a Service Level of Agreement - for an estimated timing of resolution according to the severity of the issue/requirement.
    Define and classify the defects or incidents according to the timing agreed on the SLA; e.g. Critical issues to be resolved in less than 24h, Critical incidents can be unavailability of the system or servers down. Moderate issues to be resolved within 72h, and so forth...

Finally, I would also recommend building a robust defect reporting mechanism which interfaces with IT. A good example could be eTracker, Jira, or SharePoint. By using these tools you can raise items according to the agreed scope and track the progress, flag concerns, escalate unresolved issues to senior management, and so on.

On a separate note, I would also consider that depending on the complexity of the teams and/or the business the maintenance of this relationship between IT Support and Operations may need to be managed by a separate role.


------------------------------------------------------------------------------------------



When I have had support responsibilities I found it was a very successful week if I got the planned work done on two days. A lot of support time may be taken up responding to problem reports. Even if the problem is out of your control you still need to determine that it isn't in your control. You may then need to manage the response to the problem.

There are projects (usually on the small side) within the work that the support group will be handling. Setting up a process to make those happen could be worthwhile.

The one area ITIL is reported to be best suited to is managing support groups. I would consider implementing that area of ITIL.