cancel
Showing results for 
Search instead for 
Did you mean: 

Concurrent Developer Testing in 12.1 Environment

former_member1170711
Participant
0 Kudos

We have been using 11.5 for quite a while and are now trying to learn the ropes with 12.1.

We often have multiple developers testing new changes to the same application at the same time on the same server. In 11.5 we basically did this by using standardized naming conventions in the file system. Different developers used different URLs to essentially get to different copies of the application for testing.

We are hoping we have some better options for concurrent development in 12.1. Does anyone have any suggestions? Is there any way to use NWDI to deploy different versions of the same application to the same development server such that they can be tested independently without doing a lot of renaming?

With our Java web apps (unrelated to our MII web apps) we just deploy .war files with different context roots and that solves most of the issues. Is a similar approach available in 12.1?

Thanks,

Mike

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Mike,

If you are using Source Control (NWDI) with 12.1 you won't be able to have multiple developers hit the same objects at the same time. Once a developer checks out the objects via an Activity, it makes them read only for other developers. In the 12.X Best Practice Guide we suggest checking out corresponding QT, DT, and web pages (for example) so that two developers working on separate dev requests don't negate each other's work. Currently you are really working on a renamed copy of your app and so its not the same app (in terms of a project structure). There is no real good way to do your process in 12.1 due to the project hierarchy. Source control is centered around projects, which is why you make a shared project so that NWDI can manage object versions.

Regards,

Kevin

PS Here are some links for more info on NWDI....

[12.1 MII Help for Source Control |http://help.sap.com/saphelp_mii121/helpdata/en/49/32ef82e87f62b9e10000000a421138/content.htm]

[NWDI Help|http://help.sap.com/saphelp_nw2004s/helpdata/en/03/f6bc3d42f46c33e10000000a11405a/frameset.htm]

[NWDI SDN Page|http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/webcontent/uuid/f6eb8e9e-0901-0010-8abb-cba5279db9b6#section2 [original link is broken]]

former_member1170711
Participant
0 Kudos

Hi Kevin,

Thanks for you response. This is somewhat helpful. but it does not give me a path forward Let me be a little more specific.

Let's say we have two developers working on the same project/application. Developer A is fixing a bug and developer B is adding a new feature. Let's assume we are using NWDI's sourece control. Let's also assume that the two developer do not need to check out the same files and that they are working on two different Activities. Let's say developer A is working on Activity X and developer B is working on Activity Y.

The question is, how do developers A & B test on the same MII server at the same time?

It typcially is more complex than this. Typically we have more than two developers testing at the same time and sometimes developers will work on the same Activities. In addition to this type of development/testing we typically have an integrated version of the application that we run on the same server at the same time as well. Typically a developer is working on what we call an SCR (Software Change Request). They are developed/tested independently and once they are finished/tested/verified they are merged into the "integrated" version. We currently have the ability to do all of this simultaneous on the same server (although we only have a crude way of doing it by using copies and a strict naming convention).

In the J2EE world this is easy. We can just delpoy the same .WAR files with different context roots and they run independent of each other.

What is the best way to handle this with MII 12.1/NWDI? I don't think it is reasonable to require one MII server per developer.

Thanks for your help.

-Mike

Former Member
0 Kudos

Mike,

Most of your questions have come up with other customers. Our RKT materials for 12.1 covered Content Mangement focusing on using the Source Control in the workbench when NWDI is configured. The RKT becomes the OKP when the version becomes generally available, so I would recommend reviewing it if you have acess to [OKP|http://service.sap.com/okp].

That being said, let me answer your questions. SAP suggests having 4 systems, but 3 could be used (DEV, QA, PROD). An integration for dev system would be the fourth, but this depends on what requirements are necessary for your landscape. As for testers A & B, they could test normally as they would in 11.5 or 12.0 on the same box at the same time. Unfortunately NWDI doesn't let multiple developers work on the same activity (or in your case SCR). Activities are user specific. You don't need an activity to open a query and test it. You only use activities for editing. If tester A wants to get the latest from developer B, tester A could do a sync to get the updates in read only mode.

Hope it helps,

Kevin

former_member1170711
Participant
0 Kudos

Kevin,

I have not been able to find anything in OKP that addresses this.

If I understand correctly, 12.1/NWDI provides no additional help for concurrent developer testing. We still have to make copies and use a naming convention just like in 11.5.

I can see where NWDI helps with grouping changes (Activities) and helps with the transport process once you want to go beyond the development server but I don't see any help for concurrent testing.

If anyone has a better way of handling this please let me know.

Thanks,

Mike

Former Member
0 Kudos

Mike,

The OKP for MII 12.1 has a section for Content Management. It has an eBook and 2 simulations to get a better feel for using Source Control in MII.

12.1 with NWDI will force you to have one developer work on one SCR, unless you break the SCR down into smaller chunks. You shouldn't have to make copies of everything since that could lead to a change management nightmare. It also defeats the purpose of having versions on MII objects.

Regards,

Kevin

Former Member
0 Kudos

Hi Michael,

From my limited experience with NWDI + MII 12.1, it depends on how much overlapping you have between your concurrent developers.

If they are both requiring to edit the same transactions then you will encounter lock out issues as one person's activity will prevent others from making changes to the checked out transaction. I did not think activities locked out a whole project and it was just at the transaction level but I will have to double check on that. In NWDI you'd be importing shared projects then checking out specific transactions within that shared project so you might find multiple developers might not be overlapping as much as you'd think?

You might want to look at how NWDI is setup, there is a use case scenario for concurrent developers when setting up NWDI tracks and you can create a "branch" development track and down the landscape consolidate all your changes to an integrated application. Those J2EE NWDI track concepts should still apply to SAP MII I believe.

I'd suggest having a look at NWDI track setup, that might shed some more light.

As an MII "application" as a whole, if you do organise your code structure right from the 11.5 -> 12.1 transition, you should be ok if you have a "common" transaction project that contains your generic transactions and hopefully customised logic seperated into another project.

Regards,

Danny

Former Member
0 Kudos

Danny,

Activities don't lock out the entire project, only the objects linked to the activity. The more you add to the activity, the more you lock out and force read only on your peer developers.

Regards,

Kevin

Former Member
0 Kudos

Hi Mike,

"Let's say we have two developers working on the same project/application. Developer A is fixing a bug and developer B is adding a new feature. Let's assume we are using NWDI's sourece control. Let's also assume that the two developer do not need to check out the same files and that they are working on two different Activities. Let's say developer A is working on Activity X and developer B is working on Activity Y.

The question is, how do developers A & B test on the same MII server at the same time?"

I'm a little confused by the above. What's stopping you from having both developers work and test on the same MII server at the same time? If the files and features are completely separate then it shouldn't be a problem and one can test one module and the other developer the other module and it doesn't matter that they aren't fully tested/functional. In the transaction manager you can filter by user to only see the transactions related to a specific user for finding errors and MII can handle multiple users running at the same time.

We typically have 2-3 people building and testing at the same time working on different files and typically don't run into any problems. We don't have NWDI setup yet either. The only time we potentially get problems is if the developers is working on a shared IRPT page or javascript and causes an error in it so the other developer can't test until that's fixed. But if it's completely separate modules then both developers test at the same time.

I could see running into problems once you add alot of developers or if there are alot of shared code, but if it's relatively modularized I would think it would work?

Hope this helps.

Kerby

agentry_src
Active Contributor
0 Kudos

Hi Mike,

I will also put in a couple of other items we ran into working on the Batch Manufacturing project. First is that common objects should be checked out under separate activities from function specific items. In other words, if you are working on the css file for the whole project as well as an irpt, trx, and a couple QT and DTs, check out the css separately from the other items, do the modifications you need and then check it back in. We did localization on Batch Mfg and found that the language bundles were generally the main area of conflict. By checking them out separately and then back in again as soon as modifications were complete, we minimized having it locked when other developers were working on the project. It was not unusual for the english bundle to be checked out and in 5 or 6 times while working on a function specific activity.

Another suggestion is to check in you work frequently (daily if possible) and at times when the objects are reasonably functional. We had between 6 and 9 developers working on the project at a time and did not often have lockout issues. We did have them, but not so often that an email did not resolve them pretty quickly.

Not sure what problem you are seeing with the testing. What I found was that as long as the object was saved (not checked in), you could execute the object from the workbench (Ctrl-T, or the Test button). I think this was true as well if others saved, but had not checked their work back in, but do not recall ever testing that specific circumstance.

Regards,

Mike

former_member1170711
Participant
0 Kudos

I appreciate everyone's suggestions. The are unfortunately not really addressing the core issue that I am trying to shed light on. We are not developing in 12.1 yet but we plan to be in a month or so and I am trying to plan ahead.

The main thing I am concerned about (and surprised that no one else seems to be concerned about) is that if you have 10 developers and one of them saves something in the workbench they potentially just broke the system for the other 9 since everyone is essentially running the same code on the server. Am I missing something? I know this is the case in 11.5. We figured out work arounds but I always considered them to be kind of a last resort scenario. I was hoping 12.1 would offer something better but it sounds like it does not.

If I understand correctly, the version control only keeps multiple people from editing the same files. That is certainly helpful but it seems to offer no help in the run time environment. There is no "context" like there is in J2EE. This is a shame since MII is running on top of J2EE.

Someone correct me if I am wrong but my understanding is that if you want to be able to try out changes without effecting anyone else you need to be running on a seperate MII server from everyone else Or, if you are on the same server as everyone else then you need to run alternate copies of the files with different names until you have it working the way you want--just like in 11.5.

Thanks,

Mike

Former Member
0 Kudos

Mike,

As for your main concern...10 developers and one of them saves something in the workbench they potentially just broke the system for the other 9 since everyone is essentially running the same code on the server....

That is true that they could break something, but there is a way to view version history and create a new version based off of an older correct version. Unit testing should be done somewhere in the process. Also you would do testing before your migrate your objects from a dev system to a QA system and then to a production system. MII's source control does keep others from editing objects while a person is working on them. I do not fully understand your run time comment. There is an option to make your project only executable in a production system, allowing no one to modify objects. This would force a one way (DEV -> QA -> PROD) migration.

Regarding ....if you want to be able to try out changes without effecting anyone else you need to be running on a seperate MII server from everyone else ...

You can check out the objects, modify them, test and then delete the activity associated with the change. That way no one has seen you changes and you have tested your objects. However, another person may need that object for some other reason at the same time you are experimenting. Either way you will need a form of communication with your team to make everything go smooth, as Mike A. suggested. If you haven't started playing around with 12.1 & NWDI in a sandbox environment I would highly suggest it along with the OKP.

Hope it helps,

Kevin

Former Member
0 Kudos

Mike is exactly on target with the problem.

For developing in J2EE apps using version control I have always done the following:

1. When you check out the source code, there is a copy of the entire system on your hard drive.

2. Each developer has an instance of the app server that runs on thier PC

3. When I change a component and save it, it is only reflected on my hard drive and not on the server

4. I check in components when they are working, or at least not totally broken.

5. If two developers work on the same component the source control system is smart enough to do/propose a merge.

With MII 12.0 this is what I have experienced that stops you from doing the above

1,3,4. Source code resides in the NW database so you can't get a copy on your hard drive and can't save interim changes locally.

2. Can't really do that because of the way the app is deployed and the hog that is NetWeaver. Even if you could run NW on your desktop, or create a virtual system for each developer, there is no way to then deploy your changes to the repository from your private MII.

5. Apparently, because we chose not to use NWDI, two developers can't edit the same object with NWDI.

I believe this is what Mike is talking about.

IMHO -- MII has evolved from a simple charting app to a development framework and the guts do not support a development team. The hoops that have to be jumped through seem a bit stiff considering the cost of the product and associated NetWeaver and NWDI complexities.

--Amy Smith

--Haworth

former_member1170711
Participant
0 Kudos

Finally someone seems to understand the issue!

In J2EE, not only can you run locally as Amy suggests in the C drive scenario but you can also run your own independent copy of the entire application on the same server as other developers without effecting them (you just depoy your .war file with a different context root and access it with a different URL). Anyone who has done J2EE development would understand this powerful concept.

-Mike

Answers (0)