每日一文:整合
微软收购雄心扩大至TikTok全球业务
“全分離軟件可能需要5到8年時間”,雲端服務也是一樣的!
在導入 Salesforce 的時候,客戶希望能與其他內部傳統架構的系統整合。因爲考慮到未來拆解重新整合到其他 CRM 的複雜度,我採用 Middleware 協助 Salesforce 與其他系統交換資料,以 meshup 將頁面整合在 Salesforce 上,避免緊密整合。
seen from United Kingdom
seen from China
seen from United States
seen from United States
seen from Russia

seen from United Kingdom
seen from China

seen from Singapore

seen from Puerto Rico
seen from Vietnam
seen from United Kingdom
seen from China
seen from China
seen from Serbia
seen from United States
seen from Singapore
seen from China
seen from United States
seen from Russia
seen from Russia
每日一文:整合
微软收购雄心扩大至TikTok全球业务
“全分離軟件可能需要5到8年時間”,雲端服務也是一樣的!
在導入 Salesforce 的時候,客戶希望能與其他內部傳統架構的系統整合。因爲考慮到未來拆解重新整合到其他 CRM 的複雜度,我採用 Middleware 協助 Salesforce 與其他系統交換資料,以 meshup 將頁面整合在 Salesforce 上,避免緊密整合。
Abstractions break down, or get broken, at the edge. Document these.
For the sake of future devs (or future you!) document these!
Interface Segregation Principle and How to Interpret It - #Ankaa
Interface Segregation Principle and How to Interpret It In this fourth post on SOLID principles, we will take a look at the interface segregation principle and how to interpret it. If you want to check out the previous post on the Liskov Substitution Principle, you can find it here. Definition According to Robert Martin, Source de... https://ankaa-pmo.com/interface-segregation-principle-and-how-to-interpret-it/ #High_Cohesion #Interface_Segregation_Principle #Java #Loose_Coupling #Oop #Solid
I’ve covered loose-coupling before, and discussed systems where the components have limited knowledge — and use!
Asynchronocity, at the extreme, turns into Laziness.
e.g. Don't go shopping till the guests have actually confirmed that they’re coming for dinner…
Loose Coupling
Before understanding loose coupling, first check tight coupling concept which is posted in our blog.
Tight Coupling:
Classes and objects are dependent on one another.
Loose Coupling:
Reducing dependencies of a class that use a different class directly. That means, without creating objects of a class directly. Through spring framework, the container itself create an object of class so, developer…
View On WordPress
Do you know what your component’s dependencies are?
1) You know your component's dependencies 2) The other teams know your (and their) component's dependencies 3) What you know matches what they know
-3- is where life get's interesting 🙄
Inside Jidometa: Loose coupling of customer data
[Read part 3 of Inside Jidometa]
One of the major differences between Jidoteki appliances, and most other setups, is that we isolate customer data and ensure it’s not tightly coupled to the system.
Looking at the graph above, we can see the customer data is stored on disk 2, while the OS/apps/kernel are stored on disk 1.
Issues with tight coupling
Adding disks to a virtual appliance is quite trivial. Moving them to another appliance is just as simple. We know this, so we made a plan to support it.
In a typical non-Jidoteki appliance, databases, log files, application settings and data are stored on the same disk. This tight coupling introduces problems which are almost impossible to workaround once deployed:
Failed OS updates could accidentally wipe all customer data
It’s impossible to expand the disk once it’s full
It’s difficult to move customer data to a newly deployed appliance
Customers may not have full control of their data
The disk must be sufficiently large from the start
Our disk setup
Jidoteki appliances use a minimum of two disks. The first disk is quite small (8GB sparse disk) and used exclusively for storing the system and custom settings (ex: network settings). The small OS disk means importing an OVA for the first time is very quick. The second disk is sized based on our customers’ requirements, but typically range between 10GB and 2TB (sparse disk), depending on the application. In any case, the customer can opt to not import the second disk, or simply delete it and re-create it with whatever size they want.
The best part about disk 2 is we deploy it using LVM, which allows anyone to attach a third, fourth.. eighth disk (max 8 disks) of virtually any size. If a deployed appliance uses 2TB and needs to increase to 42TB, an additional disk can be added and the appliance will automatically grow the LVM disk.
Other benefits to loose coupling
By dedicating the entire disk to the customer data, we can provide full permissions to the appliance admin (the customer) to login via SSH and modify any file(s) on that disk. The customer controls their data and remains free to alter it how they want (at their own risk, of course). We do this in our own on-premises virtual appliance, Jidoteki Meta (Jidometa), and guide our customers in doing it this way as well.
Another benefit is having the ability to detach the disk from the appliance, deploy a new appliance on a different (physical?) server, and then re-attach the disk. It’s not as fancy as live migration, but moving disks is effortless compared to transferring data with rsync or some other wild migration scheme.
Of course, if it’s that easy to move data, that means it’s just as easy to backup the data, or create a fault-tolerant setup for disaster recovery scenarios.
Finally, as mentioned in a previous blog post, dedicating the second disk to customer data means it can also be replaced by network storage, such as NFS, AoE, iSCSI, or NBD. I can’t imagine the logistics (and coding nightmare) of having to support network storage when the application was designed for storing on the same disk. With Jidoteki, we simply mount the network storage to /data, instead of mounting the local disk 2 to /data. No software changes required. Easy.
Moving forward
As always, we’re happy to discuss your requirements if you plan on providing an on-prem appliance to enterprise customers. We’re familiar with enterprise requirements, and try our best to provide the most rock-solid on-premises virtual appliances out there. In a few days we’ll be celebrating 5 years of doing this stuff. It really is our specialty, and we’d love to help more companies go on-prem, the right way.
Feel free to contact us, or signup for our new monthly newsletter to stay up-to-date with what we’re doing.
Learn Java Programming - Coupling Tutorial
The term coupling is commonly used to describe a device that connects one object to another. One simple example that comes to mind is a garden hose coupling. The actual coupling is the threaded piece on the end of the hose that allows you to couple the hose to a spigot. Image trying to somehow (duct tape maybe) connect a rubber hose to a spigot without the coupling ... good luck right??? In the world of Java the term coupling refers to the connection that two classes have with each other. There are two types of coupling in Java: loose-coupling and tight-coupling. If I go back to the hose coupling for minute, it is a bad thing to have a loose-coupling (water drips and sprays everywhere) and a good thing to have a tight coupling (no drips). Back in the world of Java it is the exact opposite, loose = good, tight = bad.