Legacy Lowdown - Options When Migrating Solaris Applications


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Legacy Lowdown - Options When Migrating Solaris Applications

  1. 1. The Webinar will begin shortly….<br />
  2. 2. Legacy LowdownOptions When Migrating Solaris Applications<br />
  3. 3. Housekeeping<br />Please Participate<br />Use the GoToWebinar controls to ask questions<br />We’ll take most questions at the end<br />
  4. 4. Introductions & Agenda<br />AppZero – application virtualization software vendor <br />Server applications (Solaris, Linux, Windows) and Windows desktop<br />Founded in 2006 – Solaris application virtualization first product<br />Patented and field-proven software<br />Randy Whitcroft – Solaris Business Development<br />Ernesto Benedito – Lead Architect UNIX platform<br />Legacy Lowdown<br />Legacy Applications – How did we get to this point?<br />Binary Compatibility Guarantee – Are you covered?<br />Will your apps fit into Zones/Containers?<br />Tools to help you know where you stand<br />The Appzero Solution <br />Q&A<br />
  5. 5. AppZero Solaris in action ….<br />Large Telecommunications Provider<br />Large database used in development and support of hardware offering<br />Evolved over time…faced a choice: start over or use AppZero<br />AppZero within full production environment: “It just runs…no need to manage”<br />Financial Investment Firm<br />Legacy customer information and data required for audit purposes<br />Application and database virtualized with AppZero in production<br />Originally intended to be an interim solution… now, no plans to change<br />Systems Integrator<br />Providing support for large telecom company in EMEA<br />Single instance of application cloned or duplicated…then deployed<br />Software Vendor<br />Build customer environment internally to replicate issues and provide technical support<br />Support time reduced from weeks down to days/hours<br />
  6. 6. Legacy Applications – How did we get to this point?<br />Organizations invested heavily into either customized or even custom built line of business applications. <br />Over time, the data centers were upgraded and updated as newer applications were added, capabilities were enhanced, and performance requirements increased. <br />A great deal has changed over the last number of years! Vendors have come and gone, systems adhered to Moore’s law of technology growth, and technology has moved to become a vital component of any business.<br />And for many different reasons many organizations have been left with…<br />
  7. 7. Legacy Applications – How did we get to this point?<br />IMPORTANT<br />…but not Vital!<br />
  8. 8. Legacy Applications – How did we get to this point?<br />It is not “If”…<br />but “When”<br />
  9. 9. Binary Compatibility Guarantee<br />Sun/Oracle Binary Compatibility Guarantee was released over a decade ago…<br />Key elements around how an application was to be built using Sun recommended best practices to ensure that there was a binary compatibility<br />Developers did not know about it.<br />Developers just ignored it<br />Was not available when the application was built<br />Very few applications on 2.6 or 7 qualified<br />You either meet the requirements or you don’t…just 1% of application can mean everything<br />The bottom line…this option may not be an option!<br />
  10. 10. Just use Zones or Containers…<br />
  11. 11. Just use Zones or Containers…<br />Solaris 9<br />Solaris 8<br />Solaris 7<br />Solaris 2.6<br />
  12. 12. ret 0 – No potential stability issues. Should run<br /> ret 2 – Potential binary stability, Good chance will not run<br />Tools you already have…<br />Tools already available…included in Solaris 10 OS<br />Analyzes application your are trying to migrate<br />appcert<br />Utility used to verify ABI compatibility problems<br />It checks ELF of your app and compares library symbols against host interface<br />It can’t check everything<br />apptrace<br />Utility to verify interface compatibility problem. <br />Mostly for developers. Complex output, similar to Truss output<br />
  13. 13. Tools you already have…<br />Example of appcert verifying DB on Solaris 2.6 <br />#> appcert /path_to_old_app<br />The following (166 of 784) components had no problems detected:<br />The following (462 of 784) components had no problems detected, but could not be completely checked:<br />The following (156 of 784) components have potential stability problems:<br />333 binaries used libc.so.1, 6 of these used private symbols<br />215 binaries used libnsl.so.1, 136 of these used private symbols<br />12 binaries used libdga.so.1, 12 of these used private symbols<br />2 binaries used libdps.so.5, 2 of these used private symbols<br />7 binaries used libXext.so.0, 2 of these used private symbols<br />Summary of various warnings:<br /> - non-POSIX libthread fork call  (5 binaries)<br /> - references sys_errlist/sys_nerr  (1 binaries)<br /> - unbound symbols  (460 binaries)<br />Result code 2 => some_problems_detected(156<br />EXIT STATUS<br />     2        Some of the objects checked have  potential  binary<br />              stability problems.<br />
  14. 14. Tools you already have…<br />Example of apptrace<br />#> apptrace touch /tmp/foo<br />-> touch -> libc.so.1:int atexit(int (*)() = 0xff3c5bb4)<br /><- touch -> libc.so.1:atexit()<br />-> touch -> libc.so.1:int atexit(int (*)() = 0x11ae8)<br /><- touch -> libc.so.1:atexit()<br />-> touch -> libc.so.1:char * setlocale(int = 0x6, const char * = 0x11af8 "")<br /><- touch -> libc.so.1:setlocale() = 0x22e00<br />-> touch -> libc.so.1:char * textdomain(const char * = 0x11afc "SUNW_OST_OSCMD")<br /><- touch -> libc.so.1:textdomain() = 0x22690<br />-> touch -> libc.so.1:char * basename(char * = 0xffbffb10 "touch")<br /><- touch -> libc.so.1:basename() = 0xffbffb10<br />-> touch -> libc.so.1:strcmp(0xffbffb10, 0x11b0c, 0x0) ** NR<br />-> touch -> libc.so.1:int getopt(int = 0x2, char *const * = 0xffbffa1c, const char * = 0x11b20 "acfmr:d:t:")<br /><- touch -> libc.so.1:getopt() = 0xffffffff<br />-> touch -> libc.so.1:stat64(0xffbffb16, 0xffbff888, 0x11b20) ** NR<br />-> touch -> libc.so.1:int * ___errno(void)<br /><- touch -> libc.so.1:___errno() = 0xff039c7c<br />-> touch -> libc.so.1:int * ___errno(void)<br /><- touch -> libc.so.1:___errno() = 0xff039c7c<br />-> touch -> libc.so.1:int creat64(const char * = 0xffbffb16 "/tmp/foo", mode_t = 0x1b6)<br /><- touch -> libc.so.1:creat64() = 0x4<br />-> touch -> libc.so.1:int futimens(int = 0x4, consttimespec_t * = 0x0)<br /><- touch -> libc.so.1:futimens()<br />-> touch -> libc.so.1:int close(int = 0x4)<br /><- touch -> libc.so.1:close()<br />-> touch -> libc.so.1:exit(0x0, 0x0, 0x0) ** NR<br />
  15. 15. And you are in a situation …<br />You are in a situation where:<br /><ul><li>You get an extensive report with an intimidating summary!
  16. 16. You probably find your app uses private, unbound or obsolete symbols, it shouldn’t. Even if your app happens to work on a newer OS, it doesn’t mean it will continue to with newer updates.
  17. 17. Even if you get a green light from the report you can’t be 100% sure the app will work (the tool cannot check everything)
  18. 18. Applications with green light can still fail (e.g. they assume certain FS layout, queries for certain release version, etc.)
  19. 19. Or even worse:
  20. 20. your app is statically linked, issuing system calls in assembly, or simply doesn’t work under a branded zone</li></li></ul><li>With appzero …<br />Solaris 9<br />Solaris 8<br />Solaris 7<br />Solaris 2.6<br />Appzero <br />Virtual Application Appliance<br />Solaris 2.6, 7, 8, 9<br />Solaris 10 Kernel<br />ZFS<br />FMA<br />DTrace<br />Containers<br />16<br />
  21. 21. AppZero packages applications/dependencies in VAA*<br />Binaries<br />Libraries<br />Services<br /> Config<br />=<br />Application<br />OS<br />* Virtual Application Appliance (VAA)<br />
  22. 22. The AppZero Virtual Application Appliance VAA)<br />The ( ) VAA:<br /><ul><li>Packages all the elements required by the application to run:</li></ul> Executables, libraries, services, scripts, configuration files, network identity, host identity.<br /><ul><li>Requires a compatible OS on the target machine
  23. 23. Is isolated from the underlying OS and from other VAAs.
  24. 24. Sees a configurable, merged view of its own files and those of the OS
  25. 25. Makes no changes to the underlying OS
  26. 26. Can be managed independently and run without conflict.
  27. 27. Enables old applications to be migrated to new OS and hardware
  28. 28. Complements Oracle Solaris Zones and Oracle VM Server for SPARC</li></li></ul><li>AppZero Solaris elements<br />Appzero director: orchestrates interaction of application and underlying OS <br />(Solaris 9, 10)<br />Appzero creator: packages application and dependencies into VAA<br />(Solaris 9, 10)<br />Virtual Application Appliance (VAA) = container = capsule <br />(Solaris 2.6, 7, 8, 9 and 10)<br />Sol 2.6 App<br />HTTP<br />Sol 7 App<br />Sol 8 App<br />appzero<br />Solaris 9 or 10<br /><br />
  29. 29. How does AppZero work under the hood?<br />Appzero uses “intercepts” <br />A point of control inserted between an application and the OS<br />Appzero intercepts certain system calls <br />Virtualization logic in both the kernel and userland space<br />Executes when the application executes<br />Not a background process or “agent”<br />
  30. 30. What do AppZero intercepts do?<br /><ul><li>Process tracking
  31. 31. fork, exit, wait
  32. 32. If parent is in appliance context then child is in capsule
  33. 33. Monitor
  34. 34. read, write, send, recv, sendto, recvfrom
  35. 35. Track H/W resource usage; CPU, memory, network & disk
  36. 36. Parameter Spoofing
  37. 37. uname, ioctl, getmsg, bind, sendmsg,
  38. 38. CFM: open, stat, fstat, etc.
  39. 39. Modify a parameter sent to or received from the kernel</li></li></ul><li>AppZero 3 Step Process<br />1. Analyze<br />3. Run/Manage<br />2. Virtualize<br />VAA<br />Physical<br />VAA<br />AppZero<br />Creator<br />
  40. 40. 1. Analyze<br />Analyze if the application has:<br />Dependencies on kernel drivers deployed by the application.<br />Special hardware requirements available/installed only on the source server, such a dedicated backup hardware device.<br />Source System:<br />Review file system: i.e. mount points, total disk space needed, special asynchronous vs. synchronous I/O requirements.<br />Review services: determine which services are required for the app that will end up in the appliance<br />Review kernel parameters: many applications require specific kernel parameters (e.g. #semaphores, shared memory, etc)<br />Complete the application profile<br />
  41. 41. 2. Create<br />Virtualize to VAA<br />Source<br />Output<br />VAA<br />VAA<br />Physical<br />AppZero<br />Creator<br />Approaches for creating a VAA:<br /> 1. Learn mode<br /> 2. Fresh Install on empty VAA<br /> 3. Whole HD capture<br />Portable<br />Data Center<br />Final format can be uncompressed or compressed & encrypted file<br />
  42. 42. Encapsulating a legacy system<br />Move to create machine<br /> tar.gz file<br /> Export/share/mount<br /> AppZero - screate<br />Install<br />Target<br />Solaris 10<br />Modern Solaris 10 server <br />Source <br />Solaris 2.6 with Application<br />Ultra10<br />Note: Creation of a VAA requires access to the files in the legacy system:<br />
  43. 43. AppZero Creator: Capture files, refine properties<br /> Select services<br /> Resource utilization<br /> Start up mode<br />Review files in the VAA<br />Tweak mount points <br />
  44. 44. appzero<br />solaris<br />3. Run/Manage<br />VAA optionally keeps the network identity and hostid of the source system<br />AppZero Controller on target machine<br />SOURCE<br />Solaris 2.6<br />TARGET<br />Solaris 10<br />DHCP server<br />VAA - Solaris 2.6 App<br />IP =<br />MAC = 08:00:20:b1:41:47<br />Client name = old app<br />IP =<br />IP =<br />
  45. 45. Where do the VAA files reside?<br />appzero<br />appzero<br />NAS/SAN<br />Solaris<br />Solaris<br />csuperblock<br />cdata<br />/usr/local/appzero/appliances/vaa/<br />/etc<br />..<br />/bin<br />cstore<br />/lib<br />/product/..<br />X<br />VAA<br />VAA<br />VAA<br />
  46. 46. AppZero Controller: managing VAAs<br />[root@tps31 bin]# ./appzctrl <cmd><br />where CMD is:<br /><ul><li>list - Display list of appliances
  47. 47. dock – Register an appliance
  48. 48. undock – Unregister an appliance
  49. 49. startup - Runs the defined startup script for an appliance
  50. 50. shutdown - Runs the defined shutdown script for an appliance
  51. 51. run - Runs an executable inside an appliance
  52. 52. procl - Display appliance process list
  53. 53. prop - Display appliance property
  54. 54. edit - Edit appliance property
  55. 55. cprop - Display controller properties
  56. 56. cedit - Edit controller properties
  57. 57. compress - Compress an expanded fileset into a .con file
  58. 58. uncompress - Expand an appliance's .con file
  59. 59. upgrade - Upgrade an appliance
  60. 60. sysversion - Displays controller and kernel module version</li></li></ul><li>What type of application can I put on a VAA?<br />VAA<br />application (s)<br />appzero<br />NO<br />Custom and proprietary applications<br />Of the shelf applications.<br />A simple “hello world” type of application<br />A Web server<br />A database (DBMS)<br />A complex ERP system<br />Etc……..<br />Do I have to change or recompile my app?<br />Note: apps with proprietary kernel drivers require specific conditions<br />
  61. 61. VAAs and Oracle Solaris Zones<br />Basic VAA<br />No virtual networking<br />Doesn’t have Identity. UOS identity inherited<br />Globally compared with chroot environment. (but is not a chroot environment)<br />Application isolation<br />Virtualized Network<br />Manually set network identity<br />Basic capsule capabilities plus identity mapping<br />Own Identity IP address, hostname, MAC, system ID are virtualized with values defined in  the appliance properties<br />AppZero Controller installed on the Global Zone<br />VAA managed across Zones<br />
  62. 62. You’re probably wondering about ….<br />Level of effort: no re-engineering<br />Familiarize staff with AppZero solution<br />Virtualize/encapsulate application and test<br />Implementation is a copy, not an installation<br />Time frame: a day to a week depending on complexity<br />Skill level: application-knowledgeable admin or analyst<br />Cost: one time costs<br />Creator $5K, VAA $5K, Annual maintenance 20%<br />VAA can be used in dev/test/pre-production/production/cloud/DR concurrently<br />Migration as a Service Program<br />$12,500 per application. Risk Free! Contact us for more information...<br />
  63. 63. And maybe ….<br />Where it won’t work: <br />Solaris on x86 platforms, Solaris 2.5, Solaris to/from Linux, Windows, or UNIX<br />What about applications with kernel drivers?<br />Doable under specific conditions<br />Performance overhead: a non-issue <br />Application performance tends to improve running on current OS and new hardware<br />(%0 pure CPU, %3 business apps,%10 compilers.) <br /> Reliability: years of production use at large accounts<br />
  64. 64. AppZero application virtualization summary ….<br /> Package once, run everywhere<br /> Eliminate application/application conflicts (sandbox)<br /> Run application on new hardware -- better performance/lower cost<br /> Server consolidation<br /> Continuity and disaster recovery<br />
  65. 65. Next steps….<br />No-charge “AppZero Application Assessment ”<br />Technical analysis of your application environment <br />App components<br />Services<br />3rd party dependencies<br />Kernel modules<br />Fit with AppZero<br />Connect directly with us<br />Randy Whitcroft rwhitcroft@appzero.com<br />Ernesto Beneditoebenedito@appzero.com<br />Share this recorded session with your colleagues at www.appzero.com<br />For more information or product download visit : www.appzero.com<br />