이번에 소개해 드릴 내용은 드디어 공식 발표된 중국 내 Windows Azure 서비스(데이터센터) 입니다.
현재 글로벌 클라우드 플랫폼 업체 중에서는 처음으로 중국 내 공식 서비스라, 대 중국 클라우드 서비스에 활용하시면 큰 도움 되실 듯 합니다.
Microsoft becomes the first global public cloud provider in China with the general availability of Microsoft Azure in the region
요즘 중국 내 베이징 부근 서비스를 준비하는 교육 업체 분들과 검토를 진행 중인데, 중국 내에서는 빠른 속도와 서비스를
제공하고 있습니다. 국내 미디어 업체 중 한곳은 중국 내 E&M 서비스를 Windwos Azure 홍콩 데이터센터를 통해 중국 내 서비스를
하고 있는데요, 응답속도나 대역폭 모두 충분히 대 중국 서비스 가능할 정도로 좋다고 합니다. 중국 내 서비스를 위해 홍콩 데이터 센터를 이용하는 것도 좋은 대안이 될 듯 합니다.
이하, 중국 Windows Azure 데이터센터 공식발표 내용이니 참고 하시길 바랍니다.
- 중국 Windows Azure 데이터센터는 전세계 Azure 데이터센터와 같은 하드웨어/소프트웨어 기술 적용. 전원공급이나 보안 설비도 글로벌 규정에 맞춰 적용되어 있음. 관리 운영 주체는 21Vianet이 운영
- 중국 법규정으로 인해 EA 계약은 중국 파트너사와 별도 계약이 필요. 중국 현지에 법인이 있는 고객만 계약 가능
- 중국 Azure 공식 웹사이트는 도메인이 다름 - www.windowsazure.cn
- 중국 Windows Azure 포털에서는 중국어와 영문 사용 가능
- 중국 Windows Azure 데이터센터의 클라우드 서비스는 중국 내부 서비스만을 전제로 서비스 중.
일본 데이터센터 공식발표 소식이 며칠 전 같은데 벌써 중국 DC가 발표 되었네요.
한국에도 어서 빨리 데이터센터가 들어오면 좋겠습니다.
Wow, this post is late. It’s been a pretty tough month for me personally. Probably the highlight was an ice storm that hit central North Carolina and crushed us. My house was without power for 4 days. The whole area looked like a war zone. There were trees down everywhere. Roads were impassable. It took me 2 days just to clear my driveway so we could get cars in and out. I took off an entire week plus to work on clean up. I’ve logged more hours with a chainsaw in the past month than, I think, most people do in a lifetime. Even now, I’m, at best, half way done clearing debris and repairing fence lines.
So, this post is ridiculously late and my blog has been pretty quiet. Sorry about that. I’ve got a ton of info to get out in the next week or so, so expect a fair number of postings.
A couple of weeks ago, we published the release notes for our sprint 62 deployment. The notable features in this deployment were in our Application Insights service and you can read about them in the release notes.
I want to take a few minutes to discuss one of them, in particular, though. In sprint 62, we introduced the first peek at a new log search service. This is a major addition to our application telemetry capabilities. We describe Application Insights as “Providing a 360 degree view of your application, helping you ensure that it is reliable, performing and delivering the business results you expect.” We’ve got Application Performance Monitoring (APM) capabilities, Usage analytics and now Log analytics. Log analytics allows you to mine all the telemetry (automatically generated or custom logging) to find patterns or to isolate problems. In a live service where you can’t just attach a debugger, logging is a lifeline that enables you to understand what’s actually happening inside the app and analyze the effects of changes that you make.
What you see there today is still just a humble beginning but we will continue to build on it and make it a VERY rich log analysis capability. Check it out when you have a change, give us your feedback and stay tuned for more enhancements.
Whenever you deploy a BAM Activity, the underlying database infrastructure is created for you automatically. Apart from the following five tables (and their associated views), bam_<ActivityName>_Active , bam_<ActivityName>_ActiveRelationships, bam_<ActivityName>_Completed ,bam_<ActivityName>_CompletedRelationships, bam_<ActivityName>_Continuations , you also get the following SSIS packages –
Something that’s very easy to miss is that none of these SSIS packages run by default. You need to create a SQL Agent Job and schedule these packages to execute at well-thought out intervals. More on this later.
So, how does BAM partitioning work? Let’s say you have deployed a BAM activity and your Activity data gets inserted into the activity tables mentioned above. Over time, the bam_<ActivityName>_Completed and bam_<ActivityName>_CompletedRelationships tables would bloat up and as a result data inserts/reads would be slower. That’s where the BAM_DM_<ActivityName> SSIS package comes into the picture. Whenever it runs, it renames the bam_<ActivityName>_Completed table as bam_<ActivityName>_<GUID> and bam_<ActivityName>_CompletedRelationships table as bam_<ActivityName>_<GUID>_Relationships. Following this, it creates new copies of the bam_<ActivityName>_Completed and bam_<ActivityName>_CompletedRelationships tables with 0 rows each, so that insertion of new data is much faster.
Whenever we look at BAM data through the BAM portal, the BAM data is queried through the BAM views (the tables are not queried directly). So, after the creation of these two new partition tables, the BAM view definition is updated by the BAM_DM_<ActivityName> SSIS package, so that all the data that is present in the BAMPrimaryImport database for this activity is viewable/queryable.
So far so good. So when does this data move to the BAMArchive database?
An administrator can specify the time window for archiving activity instance data in the BAMPrimaryImport database. The OnlineWindowTimeUnit (default – MONTH) and OnlineWindowTimeLength (default – 6) properties for a deployed BAM Activity in the BAM_Metadata_Activities table in the BAMPrimaryImport database controls when activity data is archived to the BAMArchive database.
As per the default settings of the above properties, BAM data is retained in the BAMPrimaryImport database for a minimum of 6 months. But, don’t let the above statement mislead you. The movement of data is also dependent on how often you are running the BAM_DM_<ActivityName> SSIS package. Let’s say you have scheduled your BAM_DM_<ActivityName> SSIS package to run once per month. On the sixth month, you should have 6 sets of partition tables for the activity. However, only on the seventh month would these partitions be moved to the BAMArchive database. The reason is that the package maintains the time a partition was created in the bam_Metadata_Partitions table –
So, after the creation of the new partitions, the BAM_DM_<ActivityName> SSIS package checks in the above table if there are any partitions (belonging to this activity) that can be archived to the BAMArchive database. This check is based on the CreationTime value that was stamped during partition creation time. So, only on the seventh month when our package runs, it would see that the first created partition falls outside the Online Window (i.e., older than 6 months) and hence, the first partition (that was created in the first month) gets archived to the BAMArchive database. This archived data would no longer show up in the BAM Portal.
Please note that manually updating the OnlineWindow for the BAM partitions is not supported. It must be done through the bm.exe tool. For example, to set the OnlineWindow to 6 days you can run this -
bm.exe set-activitywindow -Activity:<ActivityName> -TimeLength:6 -TimeUnit:Day
The above command would cause all BAM partition tables for this activity that are older than 6 days to be moved to the BAMArchive database. Note that this movement to BAMArchive would only happen the next time the SSIS package runs – if the package is scheduled to run daily, the old partitions would be moved on the seventh day. If however the package is scheduled monthly, these partitions stay back till the end of the month.
Another question that people have is how often should you be running these packages? It would really depend on the volume of your BAM data. For most cases, it should be good enough to schedule the BAM_DM_<ActivityName> package once a month. But, for high volume scenarios (eg: million rows a day), it would be advisable to schedule the job more frequently – say once every week or so. In the high volume scenario, you should also reduce the OnlineWindow from the default of 6 months to lower (say 3 months or so) – or else, you would have too many partitions for the activity in the BAMPrimaryImport database. This would lead to query timeouts and general slowness when your BAM queries execute.
There’s a catch though. If you are running this SSIS job too often (eg: each day) and the OnlineWindow has not been reduced from the default of 6 months, you will run into issues. The package would error out with the following –
Executing the query "EXEC [dbo].[bam_Metadata_SpawnPartition] N'MyActivity..." failed with the following error: "RegenerateViews_ViewDefinitionTooLong".
Whenever you get this error, it’s an indication that the SSIS package has been scheduled far too frequently (and the OnlineWindow hasn’t been reduced accordingly). If you can recollect, in the earlier part of the article, we discussed that when you query data from the BAM Portal, you don’t query the tables directly, rather you query the views that are a composition over all of the partition tables and the currently active tables for the activity. So, each time the SSIS package creates a new partition, it updates the view definition to include the new partition table (it uses a UNION to do this). When this view definition string gets too big due to the fact that we have accumulated too many partition tables(as the package was running too often) you would run into this issue. So, you would have to be judicious in scheduling this package. Once a month is good enough for normal BAM volume. If you need to run this job every day, you would then have to reduce the OnlineWindow to offset the creation of too many partition tables.
Finally, this package may also fail if your BAM view(s) is using OLAP cubes and you have not scheduled the BAM_AN_<ActivityName> SSIS package. Typically, you should schedule this package to run once a day so that the cubes can be updated on a daily basis. The [bam_Metadata_AnalysisTasks] contains the details per Activity of when the BAM_AN package last ran and which activity rows in the Activity tables have been processed so far by this job. If this job has not been scheduled, then no partitions would again move to the BAMArchive database, since we are yet to update the cube with the data in the Activity tables. You would still get the same RegenerateViews_ViewDefinitionTooLong error (as the view definition would have become very lengthy due to no partitions getting archived), so you need to watch out for this special case.
Arindam Paul Roy
Jainath V R
Microsoft India GTSC
Faisal Waris has published a very interesting Experience Report on using F# on Android with the Xamarin tools. It is fabulous to again see independent confirmation of the value of F# in the mobile computing space.
F# and Xamarin triumphed. I can’t imagine writing such a complex mobile app in another language. Instead of 6K, equivalent Java code would be in the 50K LOC range and of untenable complexity. I think F# is a great language for mobile computing. It is surprising how much you can do on these devices today.
At BUILD 2014 in San Francisco? Join Miguel de Icaza for his Mobile session:
Don’t miss out on this years //build/ event starting tomorrow. It is the Microsoft developer event to watch.
We have topics ranging from The Future of Azure DevOps: Managing the Development and Lifecycle of Cloud Applications to Strategies for World Domination: Design Research Advice for Developers with a little Using Node.js and Python in Visual Studio and on Azure in-between so we really have a session for everybody.
Some of the sessions will be presented by amazing people like Leslie Lamport (he created LaTeX, my hero!) and Scott Hanselman (does he need an introduction?). The rest of the sessions are given by the actual engineers and Program Managers for the product / service they are talking about so you know its going to be good.
Build your session list and watch them 24-48h after they have been presented at channel9. The keynote will be live streamed. I am sure it will contain some cool announcements and interesting “innovation vectors”!
Here are some of the sessions I plan on watching on the first day, in the first hour slot. What do you plan on watching?
A new and fast-growing school supports its vision for learning by making full use of Office 365 to create an ‘anytime, anywhere’ collaborative space. By doing so it also drastically reduces the need for on-site storage, and creates a device-agnostic environment that allows its stock of Surface tablets to be supplemented by a ‘bring your own device’ policy.
Sandymoor School in Runcorn, Cheshire – a secondary Free School founded by local community action – opened in September 2012 with 19 students. Currently there are 110 students in Years 7, 8 and 9, grouped within the school as Foundation 1 and Foundation 2. The school is temporarily housed in a collection of single-storey prefabricated buildings. A new building with accommodation for 900 students will open in September 2014.
An Ofsted inspection in January 2014 judged the school Good, with Outstanding leadership and management.
I had not been at Sandymoor long before I realised that something really interesting is happening within its no-nonsense prefab walls. Under the leadership of Principal Andrew Green-Howard, a strong vision is taking shape of how young people can learn together collaboratively and prepare themselves for what lies ahead. And I’d say that Microsoft, with Microsoft partner Civica, can be proud of how they are supporting that, particularly by the imaginative deployment of Office 365 to cover both administrative and learning aspects of the school.
‘The reason I’m so excited about Office 365,’ says Andrew Green-Howard, ‘Is that we can take everything we do in school and where absolutely possible put it in the cloud.’
Paul Hart, the Civica e-Learning Consultant who worked with Sandymoor on their Office 365 implementation was in tune with Andrew’s vision from the start, before even the temporary building existed.
‘He had high expectations for staff and students in terms of the amount of work that would be needed to make the online learning work. Of course there was the benefit of the fact that the school was starting from scratch, and schemes of work would incorporate ICT from an early stage, rather than appearing later as a bolt-on.’
It’s clear that Andrew sees Office 365 as a shared and managed workspace for the whole school community – students, staff, parents, governors. So students and teachers, for example, use online versions of Word and other Office applications so that they have anytime, anywhere access, including the ability to work in the cloud from home whether or not they have Office installed there. He talks about the need to achieve ‘agnosticism’ with technology, by which he means that whatever system a school chooses should be available anywhere, any time, with any device. Office 365, he believes, is the only effective way of achieving that.
I talked to deputy principal and leader of learning Emma Simpson about how that works for her as a mathematics teacher working with mixed ability groups. Essentially, she uses SharePoint Online to set up sites for her five maths classes. Each has packages of work at different levels, with links to teacher-prepared explanatory video. Children log on to the maths site for their class, using one of the school’s 50 Surface RT tablets, or a device of their own, and go to the appropriate set of tasks, continuing with the support of the teacher and a teaching assistant, Says Emma,
‘This allows me the freedom to give one-to-one support, and the videos I’ve provided mean there’s no dead time while they wait for me. They help each other, too of course.’
This way of working, she says, helps children with special needs. (The school has an above average proportion of children with SEN)
‘They do their work online and share it with me, so I can give close support at each stage.’
The overall effect, she says ‘Breaks down barriers to learning – and children know intuitively how to use it, because it’s similar to what they already know, such as Facebook.’
The same barrier-removing strategy is seen in the way the classrooms are set out for group working, with twin digital projectors creating a sense of ‘learning all around. Emphasising this, there is no ‘front of the class’ focus, so teachers can work from anywhere in the room with tablets or laptops linked to the projectors.
Emma told me, too, about the way she and Andrew are encouraging staff to collaborate online, particularly through the sharing of documents in OneDrive.
‘They’re developed online – the Self Evaluation Form, policies, plans for educational visits. We rely on it quite heavily.’
Andrew Green-Howard echoes that, with a vivid description of a scenario that must be very familiar,
‘Doing it the old way, I’d create a document then email it to three people to ask for comments. They’d all work on it and I couldn’t until it came back. Then I’d collate it and now it’s a different document.’
Office 365 entirely transforms that process, he says,
‘Working on a shared version in OneDrive means everyone can see changes. It’s a proper online meeting space.’
All of that, though, as Andrew recognises, requires a change of mindset in the users, and each week there’s a staff CPD session devoted to the use of Office 365. I talked to IT manager Stuart Thow about that,
‘They are really taking to it, although it’s very different from what they had done before. But Andrew has a vision of everything in the cloud which is working well – it removes issues around backups and file storage.’
Stuart approves of the school’s Surface RTs, which were bought before he arrived.
‘It’s a cracking device, the boot-up time is fantastic, it’s simple to use with a familiar interface and it’s used in lots of ways – the camera for gathering evidence for example.’
Unsurprisingly, he adds, students are ahead of the game,
‘They use the online Microsoft packages on their tablets so they can log in at home.‘
Students are also to the fore when it comes to supporting Stuart, who is the school’s sole IT professional at the moment. A group of students are voluntary ICT prefects.
‘They help out in all kinds of ways,’ says Stuart, ‘In lessons, with students who have trouble with their tablets, setting up devices, managing updates, configuring. They’re a massive help and of course it’s good learning for them.’
Paul Hart of Civica had already alerted me to the high level of student engagement in IT support.
‘Make sure you don’t miss seeing the students taking ownership,’ said Paul. ‘That’s quite a rare thing in my experience. They do a lot of the top level IT admin and it does work incredibly well. And they have gained fantastic technical knowledge.’
After that I had to meet them so I had a talk – and a good school lunch – with James, Jonathon and Aaron, all in Year eight or nine,
‘The main thing we did was get our Surface tablets set up when they arrived,’ James told me. ‘All the trolleys, cables and everything, added Jonathon. ‘Some days we’re here late after school.’
They described various ‘rescue’ missions – restoring a PC that seemed to have lost its operating system, helping teachers with Office Online basics, and showing how to link a laptop to the projectors in the classroom.
All of them were users of Office 365 at home as well as at school.
‘Sometimes if I want to change something I can just edit on my phone,’ said James.
Aaron appreciates the home-school link with his teachers.
‘If you’ve stuck with homework you can email them and they will usually email you back during the same weekend.’
Sandymoor is still in its early stages. The new building awaits a few hundred yards away, already looking impressive, and within weeks of inhabiting it, the temporary home will be a series of photographs in a scrapbook. There’s strong anticipation of the hugely expanded potential of the new school. At no point, though has there been any sense of marking time, waiting for it to arrive. Rather, there’s a strong feel of foundations being laid – not just in terms of ICT, but in the development of attitudes, standards, behaviour and the quality of teaching and learning. Andrew Green-Howard has been given an opportunity, and a solemn duty, that comes to few headteachers, and he’s clearly determined to make the most of the one and not fail in the other.
But let Aaron, of Year eight, have the last word.
‘What’s good about this school is that it involves us and educates us and gives us responsibility – and helps us if we have problems.’
I guess most parents would settle for that for their children.
At BUILD 2014? Take an evening out to join the F# Bay Area Meetup Group in Silicon Valley for their Coding Dojo - A gentle introduction to Machine Learning with F#.
Machine Learning is the art of writing programs that get better at performing a task as they gain experience, without being explicitly programmed to do so. Feed your program more data, and it will get smarter at handling new situations.
Some machine learning algorithms use fairly advanced math, but simple approaches can be surprisingly effective. In this session, we'll take a classic Machine Learning challenge from Kaggle.com, automatically recognizing hand-written digits (http://www.kaggle.com/c/digit-recognizer), and build a classifier, from scratch, using F#. So bring your laptop, and let's see how smart we can make our machines!
This session will be organized as an interactive workshop. Come over, and learn yourself a Machine Learning and F# for great good! No prior experience with Machine Learning required, and F# beginners are very welcome - it will be a great opportunity to see F# in action, and why it's awesome.
To get the most from the session please try and bring a laptop along with F# installed (ideally either Xamarin Studio, MonoDevelop or Visual Studio); you can find detailed instructions for OSX, Linux and Windows on fsharp.org.
And if you've never used F# before and want a head-start, check the great online intro tutorials on TryFSharp.org.
For those attending BUILD 2014 in San Francisco, the F# Bay Area Group will be hosting drinks at the Thirsty Bear Brewery at 6:00pm on Thursday, April 3, 2014. Come along and discsus how F# works as a community, learn how to contribute to F# tools, projects and open engineering, and learn how F# is being used in practice to solve real-world business problems with succinct, efficient, robust code.
It's //BUILD week in San Francisco! Let's raise a glass to F# together at the Thirsty Bear Brewery, close to the Moscone Center, talk F#, and have a good time with our functional-first out-of-town visitors. See you there!
Thursday, April 3, 2014, 6:00 PM
Recently, I was working on a high volume BAM environment, where nearly 1-2 million activity instances were getting inserted into a particular BAM activity. The activity fields in this activity were mapped to a couple of orchestrations, with a continuation linking the two orchestrations into a single activity.
Strangely, some thousands of these Activity Instances were not getting completed each day. One possible reason for Activity Instances not getting completed is that the continuation fragment that is expected for the current Activity Instance (row) has not arrived yet. In other words, in our case this could have happened if the second orchestration instance that was part of our BAM Activity had not started/completed yet.
To check if BAM activity instances are pending/not yet complete due to pending continuation fragments, you can query the bam_<ActivityName>_Continuations table with the following –
SELECT * FROM [BAMPrimaryImport].[dbo].[bam_<ActivityName>_Continuations] where ParentActivityID = ‘<ActivityID value>’
(need to replace <ActivityID value> above with the ActivityID of the activity row being checked for presence of continuations from bam_<ActivityName>_Active table)
If the above returns no rows, you can be sure that no continuation fragments are expected for the Activity Instance (row) in question. The next thing to be checked is the isComplete column in the bam_<ActivityName>_Active table. If this column is marked as 1 and the above query yields no results, then this row in the bam_<ActivityName>_Active table is a candidate to be moved to the bam_<ActivityName>_Completed table.
Back to the issue we were facing – we noticed that for the activity instances that were not moved to the bam_<ActivityName>_ Completed table, the isComplete column was 0 – therefore to the BAM runtime, these activity instances were still incomplete and hence they were staying back indefinitely in the Active table.
So, we turned on tracking for these couple of orchestrations and tried to make sense of what was going on. We found that for all of these rows that were staying active indefinitely, the second orchestration that was part of the Activity was not completing successfully – they were getting Terminated. The orchestration flow for these particular orchestrations were ending in a terminate shape. Upon digging into this further, we found that for any orchestration that ends in a Terminate shape, the end shape event is not propagated to the BAM runtime. This in turn, doesn’t fire the EndActivity event that is necessary for an Activity row to be marked as complete. This EndActivity event is responsible for marking the isComplete column as 1.
The solution we went ahead to mitigate the issue was to manually mark these problematic Activity instances as complete through a script that was scheduled in SQL Agent. In the script, you need to first check if continuation fragments are present for a particular Activity row and if not, you can manually mark that activity row as complete.
Another solution may have been to redesign the second orchestration so that so many of them did not end up as terminated – but, there may be a perfectly valid business scenario for you to terminate orchestrations.
Our only option (in that case) to prevent the bam_<ActivityName>_Active table from bloating up over time is to periodically check and mark as complete the activity instances that have no continuations pending.The following link has some further details on what can cause issues when mapping Orchestration shapes to a BAM activity – http://msdn.microsoft.com/en-us/library/ee270796(v=bts.10).aspx
Arindam Paul Roy
Jainath V R
Microsoft India GTSC
编辑人员注释：本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写。
Windows Azure 网站客户普遍关心的一个问题是关于我们对服务器端包含 (Server Side Includes, SSI) 的支持，以及服务器端包含是否可以与不同的扩展名（例如 .htm）正常协同工作。直到几个月前这项功能还没有推出，正如您在浏览我们的支持论坛时可能已经意识到的那样。不过，现在这一切已经改观，ServerSideIncludeModule 已添加到 Windows Azure 网站，并且完全受支持。
服务器端包含是将一个文件的内容嵌入另一个文件的简单方法，在 Web 应用程序中很常用。SSI 有时只是一个嵌入了其他页面的内容的页面，但更多时候，它将用于构建模块化的 Web 应用程序，在这个应用程序中，包含一些代码的文件可能会由其他多个文件调用。例如，下面这段来自某未命名 Web 应用程序的代码片段使用了多个 include 语句：
默认情况下，Windows Azure 网站上的 SSI 配置为仅适用于 *.stm、*.shtm 和 *.shtml 文件扩展名，但有时，人们可能需要将其扩展到其他文件扩展名。当然，这没有对错之分 - 关键在于 Web 应用程序的设计方式，如果您需要迁移使用其他扩展名构建的应用程序，则需要在 WAWS 中扩展默认配置以提供支持。
添加其他扩展名非常简单。只需为您的站点创建一个小的 Web.Config 文件即可。此配置描述 SSI 模块处理程序的添加，格式如下所示。此示例显示了添加支持以包含 .htm 文件：
注意：如果目前您的网站中还没有 web.config 文件，则只需将上述所有内容复制到一个文本文件，将其另存为 web.config，然后使用 WebMatrix 或通过 FTP 上传到网站即可。如果您已有一个 web.config 文件，则可以在 system.webServer 部分中添加 <handlers> 部分；如果您没有此文件，则可以在配置部分添加整个 <system.webserver> 部分。
如果您有兴趣了解关于 SSI 的更多信息，可以在此处找到详细指南。
博客作者：Cristhian Uribe 和 Erez Benari
今天我们宣布自 2014 年 4 月 3 日起，Windows Azure 将更名为 Microsoft Azure。这一更名反映了 Microsoft 的战略，并显示了 Microsoft 专注于将 Azure 作为客户以及我们自己的服务的公共云平台，包括 Office 365、Dynamics CRM、Bing、OneDrive、Skype 和 Xbox Live。
这也意味着我们加大了为全球应用程序提供企业级云平台的承诺。今天，我们在所有公共云平台中提供最广泛的操作系统、语言和服务的支持—从 Windows、SQL 和 .NET 到 Python、Ruby、Node.js、Java、Hadoop、Linux 和 Oracle。在当今这个移动和云优先的数据驱动世界，客户需要一个能够满足其任何需求的公共云平台，这个平台就是 Microsoft Azure。