healthy code magazine june-2014 issue midas-touch-article

4
Healthy Code June 2014 24 So what does Midas do?   Ȭ ǯ   ǰ ę ǻ¢ǰ ¢ǰ Ǜ Ǽ   ǯ ǰ ę ǰ ǰ ǯ Zero downtime deployment ¢ ¢  ¢ Ȭŗ   ǰ  ¢ ę ǵ Ȭ Ȭ ǰ ¢ Ȭ     ¢  ǯ   ǯ ¢   £Ȭ  ¢ǰ  ǯ  ¢   ¢ ę   ŖŘǰ    ǰ ě and only one of the sites is active at any given time. ǯ Ě   ǰ  Ĝ ǰ   ǯ     ¢   ĝ  ǻǼ ǯ ǰ ǰ     ǯ ǰ   ǵ Give your Mongo docs a Midas Touch! ¢ Ȭ roll their own schema migration infrastructure or use Ȭ¢ ǯ Ĝ data without downtime (unacceptable from SLA stand- ǷǼǯ   ę ǯ introduces you to Midas and talks about the runtime ǯ Figure 01: Midas at work

Upload: dhaval-dalal

Post on 07-Dec-2014

207 views

Category:

Technology


3 download

DESCRIPTION

On-the-fly-Schema Migration for MongoDB. If you want to download without logging into slideshare, please do so from http://healthycodemagazine.com/articles/download?fileName=MidasTouch_Dhaval_June2014

TRANSCRIPT

Page 1: Healthy Code Magazine June-2014 Issue Midas-Touch-Article

Healthy Code June 201424

So what does Midas do?

�����ȱ����������ȱ���������ȱ��ȱ�������ȱ��������ȱ�����ȱ���ȱ��������ȱ��ȱ�� �������ȱ��������ȱ ������ȱ ��Ȭ�������ǯȱ��ȱ�����ȱ ����ȱ��ȱ��������ȱ�����ǰȱ��ȱ��ȱ��������ȱ��ȱ��������ȱ�����ę�ȱ�������ȱ�������ȱǻ���¢ǰȱ�¢����ǰȱ�Ǜȱ ���ȱ ����ȱ �������Ǽȱ ���ȱ �����ȱ ��������ȱ  �����ȱ�����ȱ ���������ǯȱ �������ǰȱ �����ȱ ��ȱ ��������ȱ ��ȱ ���ȱ�������ȱ ���ę���������ȱ ����ȱ ����������ǰȱ �������ȱ����ǰȱ��ȱ�������ȱ������������ǯ

Zero downtime deployment

��¢ȱ¢��ȱ ���ȱ��ȱ�����¢ȱ�������Ȭ�ŗȱ��ȱ���ȱ���ȱ����ȱ����ȱ

�ȱ�� ��ȱ������ǰȱ ����ȱ¢��ȱ����ȱ�������ȱ���ȱ������ȱę���ȱ ��ȱ �������ȱ ���ȱ �����������ǵȱ ����ȱ ��ȱ �ȱ �������Ȭ���Ȭ���ȱ ���������ǰȱ ��ȱ ������ȱ ����ȱ ¢��ȱ ���Ȭ��ȱ ���ȱ �ȱ���������ȱ ����ȱ���ȱ�����������ȱ������ȱ���ȱ¢��ȱ����ȱ��ȱ ���ȱ ���ȱ �ȱ�� �����ǯȱ����ȱ�� �����ȱ ����������ȱ ��ȱ�������ȱ����ȱ���ȱ����������ǯ

�����ȱ ���ȱ ����ȱ ¢��ȱ ����ȱ �� ����ȱ £���Ȭ�� �����ȱ�����¢����ǰȱ ���ȱ �� ȱ ����ǯȱ ���ȱ  �¢ȱ ��ȱ �����ȱ�� �����ȱ��ȱ��ȱ����ȱ��ȱ�ȱ�����¢����ȱ���ę��������ȱ����ȱ���ȱ���ȱ��� �ȱ��ȱ������ȱŖŘǰȱ ������ȱ�����ȱ���ȱ� �ȱ�����ǰȱ����ȱ�������ȱ��ě�����ȱ��������ȱ��ȱ���ȱ�����������ȱand only one of the sites is active at any given time. ����ȱ����ȱ��ȱ����ȱ��������ȱ��������ȱ�����ǯȱ����ȱ�ȱĚ��ȱ� ����ȱ������ȱ��ȱ���ȱ����ȱ��������ǰȱ �ȱ���ȱ����ȱ�����ȱ���ȱ ���Ĝ�ȱ ������ȱ ��ȱ ����ȱ�ȱ ��ȱ ����ȱ �ǰȱ ����������ȱ ���ȱ�� ��ȱ�������ǯȱ����ȱ ���ȱ ���� ȱ��ȱ ��ȱ �����¢ȱ�������ȱ�����ȱ��ȱ�ȱ�� ��ȱ�������ȱ�ĝ���ȱ ����ȱ���ȱ�����ȱ����ȱ�����ȱ������ȱ���ȱ�������ȱǻ�����Ǽȱ�������ǯȱ��ǰȱ����ȱ������ȱ���ȱ�����������ȱ���������ȱ �����ǰȱ ���ȱ ���ȱ��������ȱ ��ȱ �����ȱ�ȱ �������ȱ ������ȱ ���ȱ ������������ȱ  ���ȱ ���ȱ �� ��ȱ�������ǯȱ��ǰȱ�� ȱ��ȱ������ȱ����ȱ���ǵ

������ȱ�����

Give your Mongodocs a Midas Touch!

��������¢ȱ������������ȱ�����ȱ�������ȱ����ȱ��ȱ����Ȭroll their own schema migration infrastructure or use ����ȱ�����Ȭ����¢ȱ����ǯȱ��ȱ��ȱ��Ĝ����ȱ��ȱ�������ȱ���ȱ��ȱdata without downtime (unacceptable from SLA stand-�����ǷǼǯȱ����ȱ��ȱ ����ȱ�����ȱę���ȱ���ȱ���ǯȱ����ȱ�������ȱintroduces you to Midas and talks about the runtime ������ȱ���������ȱ��ȱ�������ȱ�����ȱ��ǯ

Figure 01: Midas at work

Page 2: Healthy Code Magazine June-2014 Issue Midas-Touch-Article

Healthy Code June 2014 25

����ǰȱ �����ȱ �����������ȱ ���ȱ ����ȱ ����������ȱ��ȱ �������ȱ �ǯȱ �¢����Ȃ�ȱ �¡�������ȱ ����ǰȱ �������ȱ ��Ƿǰȱ�������ȱ ŗŞǯŚȱ ��������ȱ �������Ȃ�ȱ ���ǯȱ ��ȱ �����ȱ ���ȱ�����¢����ȱ����ȱ� �ȱ�����DZ

x� ����������ȱ����ȱ�����ȱ���ȱ��������ȱ������ȱ��ȱ�¡����ǯ

x� ����������ȱ����ȱ��������ȱ���ȱ������ǯ

��Ȭ���ȬĚ¢

Let’sȱ ����ȱ ��ȱ ���ȱ ȃ��Ȭ���ȬĚ¢Ȅȱ ������ȱ ��ȱ �����ǯȱ�������¢ǰȱ ���ȱ �¡�������ȱ �������ȱ ���ȱ �������ȱ ��ȱ ���ȱ��������ȱ��ȱ���Ȭ����ǯȱ���ȱ�������ǰȱ �ȱ��ȱ���ȱ����¢ȱ�����ȱ�������ȱ�������¢ǰȱ��ȱ��ȱ ����ȱ����ȱ���ȱ�����������ȱ���ȱ����ȱ ���ȱ��������ȱ ����ȱ ����������Dzȱ �������ǰȱ ���ȱ�������ȱ ���ȱ ���ȱ ��ȱ �����ǯȱ ����ȱ ���ȱ �� ��ȱ �������ȱ��ȱ ���ȱ �����������ȱ ��������ȱ ���ȱ ���������ǰȱ �����ȱ����ȱ �������ȱ �����ȱ �������ȱ ��ȱ ���ȱ ���������ȱ ��Ȭ�������ȱ ���ȱ �����ȱ ����ȱ ���ȱ �����������ȱ ���������ȱ��ȱ���ȱ�����������ǯȱ����ȱ���ȱ�����������ȱ����ę��ȱ���ȱ�����������ȱ��������ǻ�Ǽǰȱ��ȱ�����ȱ���ȱ�������������¢ȱ��ȱ ������ȱ���ȱ����ę��ȱ��������ǻ�Ǽȱ����ȱ��ȱ�������ǯȱ����ǰȱ ���ȱ ���������ȱ ����ȱ  ���ȱ ���������ȱ �¢ȱ ���ȱ�� ��ȱ�������ȱ��ȱ���ȱ�����������ȱ ���ȱ��ȱ��������ȱ��ȱthe new schemaŗ.

�����ȱ���ȱ�� ��ȱ�������ȱ��ȱ���ȱ�����������ȱ��ȱ������ȱ������ȱ���ȱ��ȱ��ȱ���ę����ȱ����ȱ���ȱ���ȱ���������ȱ����ȱ�¡������ǰȱ���ȱ�����������ȱ�����ȱ���ȱ��ȱ���������ǯȱ

Article

������ȱŖŘDZȱ������ȱ��ě�����ȱ��������As we ar�ȱ �������ȱ ���ȱ�������ȱ ����ǰȱ ���Ȃ�ȱ ����¢ȱ���ȱ �������ȱ ��ȱ �¡�������ȱ ���ȱ �����������ȱ ��ȱ�����ȱ��ȱ ��������ȱ �����ǯȱ ���ȱ �¡�����ǰȱ ������ȱ �ȱ ę���ȱ ��ȱ���ȱ ��������ȱ ��ȱ ��ȱ �¡�������ȱ ���������ȱ  ������ȱ��������ȱ�ȱę���ȱ����ȱ���ȱ��������ȱ��ȱ�ȱ�����������ǯȱ������ȱ���ȱ�¡�������ȱ�����ǰȱę����ȱ���ȱ�����ȱ��ȱ ���ȱ��������ǯȱ ����ȱ �����ȱ ����ȱ ���ȱ ���ȱ �������ȱ ��ȱ ���ȱ�����������ȱ ���ȱ���ȱ�����ǰȱ�������ȱ��ȱ�����¢ȱ����ȱ���ȱ��� ȱ����ȱ�����ȱ�� �¢ȱ�����ȱę����ȱ�¡���ǰȱ ������ȱ���ȱ�� ��ȱ�������ȱ��ȱ���ȱ���ȱ��������ȱ�����ȱę����ȱ��ȱ ���ȱ����ǯȱ�������ǰȱ �ȱ�� ȱ����ȱ��ȱ����ȱ����ȱ��ȱ���ȱ����ǰȱ��ȱ���ȱ�� ȱ�������ȱ�¡�����ȱ����������ȱ����ȱ��ȱ�����ȱę����ǯȱ��ȱ�����ȱ�� �ȱ��ȱ���ȱ����� ���ȱ� �ȱ�����DZ

x� ������ȱ�ȱę���ȱ ���ȱ����ȱ�������ȱ�����ǯ

x� ������ȱ �ȱę���ȱ ����ȱę���ȱ ��ȱ����ȱ ����ȱ�¡������ȱ����ǯȱ ���ȱ ����ȱ ��ȱ ��ȱ ę����ȱ ���ȱ ��ȱ �����������ȱ������ȱę�����ȱ��ȱ��������ȱ��ȱ��ȱ��ǯ

����ȱ�����¢ȱ��ȱ����ȱ���������ǯȱ��ȱ��ȱ�������ǰȱ���������ȱƽȱ������ȱ���������ȱƸȱ����ȱ���������ǯ

�ȱ�¢�����ȱ���ȱę���ȱ���������ǰȱ��¢ȱ���ȱ�ȱ��������ȱę���ȱ��ȱ���������ȱ��ȱ�����ȱ����������ȱ��ȱ������������ȱ��������ǰȱ��ȱ�����ȱ�����ȱ����DZuse transactions db.orders.���(‘dispatch’:{ status : ŧ�������������Ũ })

��ȱ ����ȱ �����ǰȱ ę����ȱ ����ȱ ���ȱ ��ȱ ������ȱ ��������ȱ �¢ȱ���ȱ �� ��ȱ �������ȱ ��ȱ ���ȱ �����������ȱ ���ȱ �������ȱ����ȱ���ȱ��������ǯȱ�ȱ�¢�����ȱ������ȱę���ȱ���������ǰȱ��¢ǰȱ ������ȱ ����řȱ ę���ȱ  �����ȱ �������ȱ ���Ȭ��������ȱ ��ȱ ���ȱ ��������ȱ ��ȱ ���������ȱ ����������ȱ������ȱ�����ȱ��������ǰȱ�����ȱ����DZuse usersdb.customers.remove(‘[“address.line3”]’)

������ȱŖřDZȱ�����ȱ��Ȭ���ȬĚ¢

ŗȱ ȱ ���ȱ ���ȱ ���ȱ �� ȱ ���������ȱ ����ȱ �����ȱ ���ȱ ���������ȱ �¢ȱ ���ȱ�����������ȱ���ȱ��ȱ��������ǵ

Page 3: Healthy Code Magazine June-2014 Issue Midas-Touch-Article

Healthy Code June 201426

����ǰȱ �ȱ ������ȱ �����¢����ȱ �¢���ȱ �ě������ȱ £���Ȭ�� �����ȱ �����¢����ȱ ���ȱ ��ȱ ���������Ř. When ��������ȱ ���ȱ ���ȱ ���ȱ �¡�������ȱ ���ȱ �����������ȱ�������ǰȱ �ȱ�������ȱ��ȱ���ȱ���ȱ�������ȱ�����ǰȱ��ȱ����ȱ�����ȱ ��ȱ ��������¢ȱ ��ȱ ��������ȱ �����ȱ ���ȱ �ȱ ���������ȱ�����ȱ�����ǯȱ�����ȱ��������ȱ���¢ȱ�����ȱ�¡�������ȱ����������ȱ ����ȱ ���¢ȱ ę���ǰȱ �����ȱ ę����ǰȱ �����ȱ �ȱę���ǰȱ ���������ȱ �ȱ ę���ȱ �����ȱ �����Ȭ��ȱ �������ȱ�����������ȱ ����������ȱ ���ȱ ����������ǰȱ ������ȱ ���ȱdate, etc.use transactionsdb.orders.���������(“dispatch.date”, ”{$date:[‘dd-MMM-yy’,’15-Aug-14’]}”)

���ȱ ��������ȱ �������������ȱ ���ȱ ����ȱ ��ȱ ����������ȱ���������ǰȱ¢��ȱ���ȱ�����ȱ��ȱ�������ȱ���������ȱ �����ȱ���ȱ�����¢ȱ������������ǯ

�����ȱ�������¢

��ȱ����ȱ����������ȱ�������ȱ�����������ȱ����������¢ȱ���ȱ������������¢ǰȱ�����ȱ�¡�����ȱ����������ȱ ��ȱ�������ȱ�¡�������ȱ ���ȱ �����������ȱ ����������ȱ ��ȱ �����ȱ ę���ȱ���ȱ ����ȱ�����ȱ �����ȱ�����ȱę���ȱ ��ȱ �ȱ ������ȱ ���ǯȱ��ȱ����ȱ ���ǰȱ �����ȱ ������ȱ �ȱ ����������ǯȱ �������ȱ ��ȱ �ȱ������ȱ ���ȱ���������ȱ ��ȱ �ȱ ������ȱ ��ȱ ���ȱ ę��Ȭ�¢����ǯȱ�¡�������ȱ���ȱ�����������ȱ����������ȱ���ȱ ��Ĵ��ȱ ��ȱ�����ȱ ę���ȱ ����ȱ ����ȱ ����ȱ �ȱ ǯ������¡�������ǯȱ �����ȱ�¡�������ȱ���ȱ�����������ȱ������ȱ���ȱ�������ȱ��������ȱ��ȱ �����ȱ ����������ȱ �������ȱ ���ȱ ������ȱ ��ȱ ���Ȭ�������ȱ����������ȱ�ȱ������ȱ���ǯȱ����ȱ�ȱ����ȱ��ȱ������ȱŖŚǯ

�������ȱ��ȱ�����ȱ������ȱ����ȱ���ȱ��������ȱ��ȱ��ȱ�������ȱ �����ȱ���ȱ�����������ȱ������ǯȱ�ȱ������ȱ�����ȱ��������ȱ���ȱ�����ȱ��������ȱ������������Dzȱ�ȱ������ȱ������ȱ������ȱ �����ȱ�����ȱ ���ȱ ����ȱ��������ȱ �����������ȱ �������ǯȱ�����ȱ�������ȱ������ȱ����ȱ���ȱ�����ȱ�������ȱ��ȱ�����ǯȱ���ȱ�����ȱ���ȱ��������ȱ�����������ȱ��ȱ���ȱ������ȱ���ȱ������ȱ����ȱ���ȱ���ȱ�����ȱę��ȱ����ǯ

x� ���ȱȱǀ���������������ǁȬǀ�����������ǁȱ��ȱa convention for naming change set directory.

x� ������ȱ �ȱ ������ȱ ���ǰȱ �¡�������ȱ���ȱ �����������ȱ �������ȱ ���ȱ �������ȱ �¢ȱ�������DZȱ�¡��������ȱ���ȱ������������ǯ

x� ���ȱ ������ȱ �����ȱ ę���ǰȱ �� �¢�ȱ �����ȱ ����ȱ ���ȱ �ȱ ������ȱ ���ȱ ������ȱ ����������ȱ �����ȱ�������ȱ ��ȱ���������ȱ�����ǰȱ �ǯ�ǯǰȱ���ȱǀ������������ǁȏǀ���������������ǁǯ�����ȱ��ȱ�ȱ����������ǯ

// 03_upperCaseCatalogItemNameAndModifyDescrip-tion.delta

use ������� db.items.���������(‘itemName’,’{$toUpper: “$itemName” }’)

db.items.���������(‘description’,’$concat: [“$itemName”, “Description”, $description”]’)

���ȱ���ȱ������ȱ ��ȱ ������ȱ�����ȱ ����ȱ ���ȱ������������ȱ������ȱ��ȱ���ȱ�����ȱ��ȱ��ȱ���ȱ������ȱ��ȱ¢���ȱ�������ǯȱ��ȱ�����ȱ��ȱ�������ȱ�� ȱ��������ȱ��ȱ¢���ȱ�����������ȱ¢��ȱ���Ȃ�ȱ����ȱ��ȱ����ȱ�� �ȱ��ȱ�������ȱ�����ǰȱ�������ȱ¢��ȱ���ȱ �����¢ȱ ���ȱ �����������ȱ ������ȱ ����ȱ ��ȱ ���ȱ Ě¢ǯ ������ȱ�����ȱ��������ȱ���ȱ�����ȱ��������ȱ������������ǯȱ��ȱ �ȱ ��������ȱ  ����ȱ ¢��ȱ ����ȱ �ȱ ������ȱ �������ȱ������ȱ �������ȱ ���ȱ ¢���ȱ ������������ǰȱ �����ȱ ���� �ȱ¢��ȱ ��ȱ ���ȱ ��ȱ ������ȱ ������������ȱ ��Ȭ���ȬĚ¢ǯȱ �����ȱ���ȱ����ȱ ���ȱ����ȱ���ȱ���� ȱ¢��ȱ��ȱ�����ȱ��ȱ��ȱ�� �ȱ�¢ȱ������ȱ��ȱ ��������ȱ�����ȱ �����ȱ¢���ȱ�����������ȱ��Ȭ���ȬĚ¢ǯ

No Leaky Abstractions

ȱ�����ȱ���������¢ȱ���������ȱ���ȱ����������ȱ�����������ȱ �����ȱ ���ȱ ��������ȱ ������ǯȱ ��ȱ ����ȱ ��ȱ �¢ȱ ������ȱ ȏ�¡��������������ȱ ���ȏ������������������ȱ ę����ȱ ��ȱ����ȱ��ȱ ���ȱ���������ȱ����ȱ���ȱȃ�������Ȅȱ�¢ȱ�����ǯȱ��ȱ�������ȱ����ȱ������ȱ�������ȱ���ȱ��������ǯȱ��ȱ���ȱ����ȱ����ǰȱ�����ȱ����ȱ���ȱ�¡����ȱ���ȱ������ȱ�����ȱ��ȱ ��ȱ � ���ȱ ��ȱ ����������ǰȱ ����ȱ ����������ȱ ��ȱ ����ȱ���������ȱ���ȱ������ǯȱ����ȱ���� �ȱ����������ȱ��ȱ�����ȱon evolving the domain model and free them from ����������ȱ ��������ǯȱ � ����ǰȱ ��ȱ ¢��ȱ  ���ȱ ��ȱ ����ȱ������ǰȱ�����ȱ ���ȱ���ȱ����ȱ��ȱ¢���ȱ �¢ǯ

Caveats

x� ��ȱ ��ȱ �¡������ȱ ����ȱ ¢��ȱ �����ȱ �����¢ȱ �ȱ�����ȱę��ȱ����ȱ����ȱ����ȱ����������ȱ�����ȱ��ȱ�����ȱ����������ȱ ��ȱ ����ȱ  ����ȱ ������¢ȱ ����ȱ ����ȱ

������ȱŖŚDZȱ�����ȱę���ȱ������£�����ȱ

Řǯȱ���ȱ���ȱ���ȱ ���ȱ�������ȱ��ȱ�ȱ���ȱ��ȱ����������ȱ��ȱ���ȱ�����¢��ȱ�����������ǵ

Page 4: Healthy Code Magazine June-2014 Issue Midas-Touch-Article

Healthy Code June 2014 27

�ě�����ǯȱ ��ȱ �ȱ ����ǰȱ  ���ȱ �����ȱ ę���ȱ  �ȱ �� �¢�ȱmove forward in timeř.

x� ����ȱ ���ȱ �¡�������ȱ ���ȱ �����������ȱ �����ȱ��������ǰȱ ���ȱ ���ȱ�������ȱ��ȱ ���ȱ �����������ȱ ���ȱ������ȱ����ȱ����ȱ���ȱ�� ȱ�������ȱ��ȱ���ȱ�����������ȱ���ȱ����ȱ���ǯȱ��ȱ�����ȱ����ȱ���ȱ����ȱ�������ȱ�¢ȱ�� ȱ�������ȱ������ȱ������ȱ��ȱ���ȱ���ȱ�������ȱ ������ȱ��¢ȱ����ǰȱ���ȱ�����ȱ ����ȱ����ȱ��������ȱ��ȱ����ę��ȱ���ȱ���������ȱ���ȱ����ȱ�������ȱ�¢ȱ���ȱ�� ȱ�������ǯȱ� ����ǰȱ ��ȱ�������ǰȱ �ȱ ���Ȃ�ȱ ����ȱ ��������ǰȱ��ȱ  �ȱ ����ȱ ��ȱ �����ȱ ����ȱ ���������¢ȱ ����ȱ�����ǯȱ��������¢ȱ ��ȱ�����ȱ ������ȱ ǻ���ȱ ŗǯŖǯŖǯ����ŗǼǰȱ ����ȱ�������ȱ ��ȱ ���ȱ �����ȱ ����ȱ�����ȱ ���ȱ ����ȱ ���������ȱ���ȱ���ȱ���ȱ���ȱ�����¢����ȱ���ę��������ȱ��� �ȱ��ȱ������ȱ ŖŘǯȱ���ȱ�����¢����ȱ ���ę��������ȱ ��� �ȱ��ȱ ������ȱ Ŗśȱ ��ȱ ���ȱ ¢��ȱ ���������ǰȱ ���ȱ ��¢ȱ ��ȱ���������ȱ��ȱ�����ȱ��ȱ������ȱ������ǯ

3. Why not rollback the database?

����ǰȱ��ȱ�����ȱ���ȱ����ȱ���������ȱ��ȱ�������ȱ��¢ȱ����ȱ��ȱ����Ȭ����ȱ��ȱ�����ȱ��ȱ��ȱ��ȱ������������ȱ�����ǯȱ��ȱ���ȱ�������¢ǰȱ��ȱ��ȱ�����ȱ��ȱ��������ȱ���ȱ�����������ȱ ������ȱ���ȱ����ȱ��ȱ��������ȱ��ȱ�������ǰȱ�������ȱ�¡��������ȱ���ȱ�� �¢�ȱ���� ����ȱ����������ǰȱ���ȱ���ȱę����ȱ�����ȱ�¡���ȱ���ȱ��ȱ���ȱ�����ȱ�������ȱ��ȱ���ȱ�����������ȱ ���ȱnot bomb.

Śǯȱ� ȱ���ȱ�ȱ�������ȱ��ȱ�������ȱ�����ȱ����ȱ���ȱ�ě�����ǵ

�������ȱ ���ȱ �ě����ȱ ��ȱ ��ȱ �������ȱ �����ȱ �¢ȱ  ������ȱ�������ȱ�����ǻ�Ǽȱ����ȱ����ȱ��ȱ�¡���ȱ��������ȱ���������ǯ

śǯȱ ����ȱ ��������ȱ ��ȱ �������ȱ ����ȱ �����ȱ  ���ȱwith?

�����ȱ���ȱ����ȱ ������ȱ�����ȱ�������ȱ �������ȱ ŘǯśǯŚǯȱ��ȱ���ȱ���ȱ����ȱ������ȱ ���ȱ���ȱ������ȱ�������ȱŘǯŜǯŗȱrelease.

�����ȱ��ȱ��ȱ����Ȭ������ȱ�������ȱ��������ȱ�����ȱ�������ȱ�������ǯȱ�����ȱ ��ȱ ��Ĵ��ȱ��ȱ�����ǰȱ����¢ȱ���ȱ����ǰȱ����ȱ�����Řȱ���ȱ�����ȱ���ȱ���ȱ���ȱ�����ȱ���ȱ�����ǯȱ���ȱ���ȱ�� �����ȱ��������ȱ ����ȱ�Ĵ�DZȦȦ������ǯ��ǯ��Ȧ��������Ȧ�����Ȧ.ȱ ���ȱ ���ȱ ����ȱ �ȱ  ������ȱ ��ȱ ����Ȭ�������ȱ ��ȱ �Ĵ��DZȦȦ������ǯ���Ȧ������¡�����Ȧ�����. ����¢ȱ���ȱ�����ȱ�����Ƿ

FAQ

1. What happens if a bug is discovered in the deployed application?

��ȱ �ȱ ���ȱ ��ȱ ����������ȱ ��ȱ ���ȱ �� ��ȱ �������ȱ ��ȱ ���ȱ�����������ǰȱ¢��ȱ����������¢ȱ����ȱ� �ȱ�������ǰȱ������ȱ��ȱ��������ȱ���ȱ�����������ȱ��ȱę¡ȱ���ȱ���ȱ���ȱ��Ȭ�����¢ǯȱ��ȱ ����ȱ��ȱ�ȱ���ȱ����ȱ��ȱ��������ȱ���ȱ��������ǯȱ���ȱǛřǯ

2. How can documents that never got requested by the application be migrated?

�����Ȭ������ȱ �¡�������ȱ ��ȱ ���������ȱ ����ȱ ���ȱ ���ȱ�¡������ȱ �¢ȱ ���ȱ ������ǰȱ ���ȱ ����ȱ �������ȱ ��ȱ�����������ǯȱ�����Ȭ������ȱ �����������ȱ��ȱ���������ȱ����ȱ ���ȱ ���ȱ ����������ȱ �¢ȱ ���ȱ ������ǰȱ ���ȱ ����ȱ�������ȱ ��ȱ ��¡�ȱ���Ȭ�������ȱ �¢���ǯȱ �����Ȃ�ȱ �ȱ ����ȱ��ȱ �����ȱ ��ȱ �����ȱ ����ȱ ����ȱ ����ȱ ��ȱ ���ȱ ¢��ǰȱ ���ǰȱ ��ȱ���ȱ�������ǰȱ�ȱ������ȱę��ȱ����¢ȱ���������ȱ�������ȱ���ȱ���������ȱ������ȱ�����ȱ�ȱ�����ȱ������ȱ��ȱ�����ȱ�����ȱ����ȱ��������ȱ�������ȱ�����ȱ ����ȱ��ȱ���ȱ�����ǯ

�ȱ�����Ȭ��ȱ���������ȱ���ȱ������ǰȱ��������ȱ ����ȱ ���� ���ȱ�����������ȱ��ȱę���ȱ��ȱ���ȱ���ȱ����ȱ�ȱ�����ǯȱȱ���ȱ���ȱ ������ȱ���� ���ȱ������ȱ���ȱ���������¢ȱ��ȱ���ȱ����ǯȱȱ��ȱ� �Ĵ��ȱ������ǰȱ����ȱ���ȱ�ȱ����Ȭ������ȱ�����ǰȱ���ȱ��Ě���ȱ����ȱ��������ǯ

��ȱ ���������ȱ ���ȱ ��ȱ ������������ȱ ������������ȱ ������Ȭ��ǰȱestablishing environments, transitioning and orienting �����ȱ ��ȱ �����ȱ  �¢ȱ ��ȱ  ������ȱ �¢ȱ ���������ȱ �������ȱwithin teams.

������ȱ���ȱ�ȱ����ȱ���������ȱ����������ȱ��ȱ ������ȱ ���ȱ����Ȭ����ȱ���ȱ���Ȭ����Ȭ����ȱ�¢�����ȱ��ȱ���ȱ���ȱ���ȱǯ���ȱ���������ǯȱ ȱ�ȱ��ȱ�����ȱ���ȱ��ȱ������ȱ���ȱ���ȱ������ȱ��ȱ����ȱ������ȱ��������ȱȬȱ��¢��ȱ���ȱ�����ȱ ����ȱ��ȱ����ȱ����ȱ���ȱ��������ȱ������ȱ�����ȱ���ȱ �¢ǯ

� �Ĵ��DZȱ ȓ���� ����������ǯȱ �����DZȱ ������ǯ�����ȓsoftware-artisan.com. ����DZȱ �Ĵ�DZȦȦ   ǯ���� ���Ȭartisan.com.řǯȱ� ȱ���ȱ�ȱ�������ȱ��ȱ�������ȱ�����ȱ����ȱ���ȱ�ě�����ǵ

������������ȱŖśDZȱ��������ȱ�����ȱ��ȱ��ě�����ȱ

versions at the same time