I am reading a book recently called Re-Engineering Legacy Software from Chris Birchall , and find many interesting insights.
The chapter 4 to 6 discussed different types of re-engineering from small scope to large : Refactoring, Re-Architecting and The Big Rewrite. The author also discuss some real examples.
For example, in chapter 5, he discussed how to break a monolithic application (a log management app) into modules, by defining interfaces and iterative development to reduce risk.
He also discuss an example to re-architect a huge monolithic legacy ecommerce web app to Service-Oriented Architecture and what the challenges will it be.
4/5 Star, Recommended.
Feel the same pain with shared database for development and I am looking for some potential solutions. Source control for Database is definetly helpful and Database Continuous Integration also seems promising. But to what extend and how to keep consistency if you used seprate database are still not that clear.
Blog reading:
Top 4 Reasons Why a Shared Development Database is Evil. by Ben Day
The unnecessary evil of the shared development database by Troy Hunt
Database Continuous Integration 101 in Atlanssian Blog
Stackoverflow discussion :
Should we have separate database instance for each developer?
2014年的一个知乎回答,突然被知乎想起,666~ 以下是全文:
您好,很抱歉您的回答受到了牵连,您回答过的问题「为什么2013年这届政府上台以来网络评论员的言论多了几个数量级?」因「违反知乎社区管理规定」已被删除。
您被牵连删除的回答如下:
Signle Value Consensus是这样一个问题,假设有许多Process (P1, P2 … Pn),每个Process可以Propose任意value,那么要求实现这样一个算法,使得这N个Process可以达成一致,即Decide on a same signle value. 达成一致本来不难,不过如果考虑到各种可能出现的故障,问题就复杂了。比如Process Failure, Message loss etc. Consensus问题在完全异步系统(Asynchronous)是无解的(FLP Impossibility),这里的系统假设是Partitialy Synchronous System. (对这两个系统假设的定义详见之前的博文)
Paxos是算法原作者Leslie Lamport提出来的一个假想希腊城邦名,更详细的故事背景可见原论文(1998)The Part-Time Parliament.
这个算法以难懂和难正确实现出名…我在这门课的最后一周卡了快一个月,也不是很好地理解它= =。Lamport 2001年还重写了篇论文,叫Paxos Made Simple,然而还是一样很难懂…