Service Oriented Architecture ( SOA ) is a way of decoupling your system architecture. It can present a series of technical challenges to the developer or technical team overall.
As a developer working with SOA, I often find myself working in several different project folders in several different languages at the same time, this can present a series of technical challenges in itself. Continually context switching and changing screens ( or having many tabs open for each project ) can become a balancing act.
Below I have outlined a series of steps that you can take to set up your environment for this style of development.
First, symlink all your seperate projects into one project folder. For example:
Given I have several project folders, each project is managed as a seperate git repository:
~/Projects/backend |- .git/index |- backend.rb ~/Projects/web_service |- .git/index |- fast_web_service.cpp ~/Projects/frontend |- .git/index |- frontend.js ~/Projects/assets |- .git/index |- assets.css
Create a new workspace directory …
And symlink all the projects into ~/Projects/stack
ln -s ~/Projects/backend ~/Projects/stack/ ln -s ~/Projects/web_service ~/Projects/stack/ ln -s ~/Projects/frontend ~/Projects/stack/ ln -s ~/Projects/assets ~/Projects/stack/
Now, when you open the stack folder, you can then search using full path globbing.
:grep 'Company' **/*
This will search across all your folders for things.
Then use ctags to index everything into a tags file.
ctags -R --exclude=.git --exclude=log * `echo $GEM_HOME`/gems/*
Now, if you don’t already have it, install the Ctrl-p plugin for vim.
Once this is done, just add this line to your vim config ( ~/.vimrc ):
let g:ctrlp_follow_symlinks = 1
let g:ctrlp_follow_symlinks = 2