Thursday, October 30, 2008

Cloud No Cloud the Law of Physics Still Apply




Limitations we have:
Speed of light.
Latencey and bandwidth are not the samething.
See Quote:


Interesting numbers below:


Caps in bandwidth is a problem.

This is important because you need to carefully consider what you are providing. Just because the server infrastructure is unlimited does not mean you don't have limitations.

Pricing ok web for storage:
15cents per GB of storage
17cents per GB of transfer




Microsoft is showing some information they found when looking at pricing.

Claim is that we need to be aware of these numbers because we will need to innovate around them.

Storage cost is getting cheaper faster than bandwidth.







I am having trouble loosing my notes with this blob entry. Please watch this if you want to understand the real world factors that should affect the design of your application in the cloud. It's actually a real eye opener.

We might have to create a contract model or get all money up front.



Microsoft .Net Workflow Service




Workflow is just another way to write an application.

Has certian service to support the app.
State Persistence
Tracking

Dublin is the on premise solution for hosting workflow services.
.net services is the off premise solution.





Premises of off premise selection









There are some restrictions when deploying to the cloud.

Showed a demo of a WF being hosted in the cloud.

What you can do today:



Only subset of activity types.

Also has a set of cloud activity types.

Now demoing vs designer.

Does not accept code in a .net service workflow. Seems like that might make it very limited but understandable.









Demo of how you can deploy and manage your workflow instances through the api.

.Net workflow service is the off premise hosted solution but is limited in functionality.

Enterprise Grade Cloud Applications




Started explaining what enterprise is. Described a company like RHI.




Describes first software as a service purchase in very big Corp.




CIO mind
Integration
- security
- application
- operational




Example where company using a cloud application with email and password has a fired employee that still has access to software.

Solution is to have an intermediator that authenticated user against clients own credentials. They created identity federation and access control claims.




Doing a demo of authentication.
Showing example of using access control service.
We will need to learn this service.




Showed security definition page above.

Looks like the application was given the ability to define groups on clients active directory. The app was a facade on top of access control service.
This service would be the foundationof our new security system.

Showed a smart client app (slide below) that works with the cloud an the cloud calls back to the client companys servers to authenticate the user.

We will need to have our clients buy geneva amd install on premises for single sign on.

Actually we can build our own security framework.






Now covering management integration.
Interesting that he is showing amazon web services as the example of solution that does not fully solve the problem.






2nd set of demos.
Showed a management console snap-in. Pretty sweet! The user administration experience looks and feels so much like the app is on premise.






Last piece is about application integration.



Because things like the database are poles down, work arounds are more difficult for the client of the application. I think that is good for us, however, it is good to have a fully fledged API.




Enter the Seeeervice Buuussss.

Showed a demo where a task entered into issue tracker created an entry into an on premise AS400.


Expanding Applications to the Cloud








First session is about expanding to the cloud.
Second session making enterprise grade cloud applications.
Third session cloud or no cloud the laws of physic still apply.

First session:



Going over decision process from when to host bs using the cloud.

Buy vs build.
On premis vs cloud.

Matrix of 6 different types



Packaged application
Hosted package
Software as a service
Home built application
Hosted home built.
Cloud platform

Monitoring and management is a challenge for using the cloud.



It's important to learn the Ali for this so you can develop your own tools.

Application management is also a challenge

Application integration is also a challenge. Azure solution is the service bus.











Slide above shows options for using the cloud. You start with hosted and them over time you rearxhitext the solution to use more of the cloud services.




Use workers and queues to increase scale and availability. Gave an example of a voting system. When millions are voting the application can't update the count fast enough. You queue the votes and then let a worker work through the queue at it's own pace and not hold up the user.

Showed an example of a voting application.








Slide above asks the question of what impact the cloud will have. The interesting anawer from microsoft is they don't know.





You should handle spikes in traffic in the design of your application as an exception.

The cloud will change the way people will handle capacity planning. Software will work like utilities industry.

Workers and queues can scale automatically.




We will need to think about 3 of these directly when redesigning our application.




We will need to consider a base approach for some parts of our database.

"not all data is equal"

Move inactive data to other stores. After a user is done shopping move the data somewhere else and treat it as reference data (inactive data).

Example for us is our archived or closed tasks.


Wednesday, October 29, 2008

Architecture Without Big Design Up Front






This should be watched in full.




This is us!

Demoing an application called architecture explorer.
This is a feature of vs 2010.



First creates a project dependcy graph.



Can do the same thing with classes.

Sometimes you want to look at the text free shape to notice things like a death star (one class that all other classes point to and circle around).

Architecture explorer can create uml activity diagrams from the code.

Use the diagrammimg tool to find problems by looking at pattern of diagram.

Full blown uml.

These views and models are focused on visializing what is happening at all levels. You can use it to troubleshoot why a bug is happening or a unit test is failing.

Created a model project type in vs for creating uml diagrams to think about design.
Uml diagram in model project is disconnected from the code.
All uml is uml 2.4. Microsoft joined the omg.

Need to watch the lap around Rosario session.

Diagrams will be able to be linked to tts items.
You can link in documents to use case diagrams.

There are some really cool features here. You should watch the entire presentation since most of it is demos.






Microsoft is taking this on to capture the information created during design and to facilitate the sharing of information.

Time to use 2010!

Azure: Cloud Service Development Best Practices







The price of reliability is the pursuit of simplicity.

Azure is an approach to provide reliable applicaions instead of trying to provide reliable servers.

Challenges to reliable software:

Challenge - State
Answer
- go horizontal, go stateless
- store state in azure storage. (Microsoft believes in this so much they have built it into the defaults)
- session state provider available for azure.

Challenge - Unreliable Components - can't trust that a single instance of an app or role will be up all the time. Create app in starbucks model. You don't wait at cash register for you coffee.
Answer
- build loosely coupled
- use azure queues for messaging

Challenge - Varying Load
- your app need to be able to handle varying loads.
Answer
- add a thermostat to your application. Have it change behavior in different loads.

Challenge - hardware failures.
Answer
- use local storage as a cache.
- Retry on transient failures.
- be idempotent.

Don't launch a dos attack on yourself.

Be predictable.

Don't have any code in your shutdown path.

Know when to throttle and shed load to keep your users happy. Twitter turned off reply feature when had scalability problems a while back. Queue batch jobs to run when utilization is low.




Build knob in application that taylors your app to do what it needs. Some actions are important to be exact others just need to be apporximate or close.

Handling updates to application:
Need to deal with both code an data changes.
Update code and data one at a time. Which ever you update has to be compatible with both versions of the other.
Use version numbers in our table schema.


Down time during upgrades:
Widows azure has rolling upgrades.




We will have precise control to roll out updates over update domains.

Use pacific ocean as time for upgrades. When sun is over the ocean there is the least amount of Internet traffic.




Mars rover needed a patch because it kept rebooting. Funny thought about the farthest delivered patch.

Use the local azure to debug and test.

Separate code and config.
Use azure config service and comfig update service.

Implement lots of logging!!!

You can turn on and turn off logging during production by updating the config file.

Tag data with unique id to track data across the system.

How get notified when something bad happens? - azure has an alert system to keep you informed. Email, Im, and phone (text message).

The big red button - panic button. Build it into your app so that you can roll back to a the last working build.




Last bit of advice: KISS


.Net Services: Troubleshooting Services in the Cloud

No notes. Too busy answering urgent emails to pay attention.


-- Post From My iPhone