Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Virtual Machineς ως κύριο περιβάλλον ανάπτυξης

Îåêßíçóå áðü ôï ìÝëïò ppolyzos. Τελευταία δημοσίευση από το μέλος cap στις 06-02-2011, 22:47. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-02-2011, 23:25 63043

    Virtual Machineς ως κύριο περιβάλλον ανάπτυξης

    Καλησπέρα, 
    Τον τελευταίο καιρό άρχισα να δοκιμάζω να χρησιμοποιώ Virtual Machines για κύρια ανάπτυξη εφαρμογών χρησιμοποιώντας το VMWare Workstation.
    Έχω στήσει ένα καθαρό μηχάνημα (Windows 7 x64 Professional) για καθημερινή χρήση (browsing, multimedia...) το οποίο χρησιμοποιώ σαν Host Machine και 2 Guest με Windows 7 x64 Professional:
    1. Ένα για κύρια ανάπτυξη
    2. κι ένα για να δοκιμάζω καινούρια πράγματα χωρίς να χαλάω το κύριο περιβάλλον εργασίας
    Ο κύριος λόγος στην αρχή που το ξεκίνησα ήταν για να μπορω να το διαχειρίζομαι εύκολα, αν πάει κάτι στραβά να γυρνάω σε παλιότερο snapshot, backup και όλα τα σχετικά.

    Αυτό που έχω παρατηρήσει ότι χρειάζομαι ένα αρκετά δυνατό μηχάνημα με μπόλικη μνήμη και μιας και το χω δεν βλέπω κάποιο μεγάλο κόστος στο Performance.

    Φαντάζομαι ότι αρκετοί από σας θα έχετε παραπάνω εμπειρία σε τέτοιου είδους χρήση και ήθελα να σας ρωτήσω για περισσότερα tips ώστε να είναι πιο αποδοτική η εργασία μου. 
    Οι ερωτήσεις και οι απορίες μου θα μπορούσαν να απαριθμηθούν στις παρακάτω:
    1. Κατ' αρχήν, είναι σωστό αυτό το μοντέλο? Γενικά βλέπω κάποια παρόμοια θέματα στο StackOverflow αλλά συνήθως είναι παλιά και δεν υπάρχει και μεγάλη ανάλυση
    2. Το Guest machine το αντιμετωπίζω σαν ένα host machine? Δηλαδή φροντίζω για firewall, antivirus και άλλα καλούδια για optimizations?
    3. Υπάρχει τρόπος να διατηρώ σχετικά χαμηλό το μέγεθος του σκληρού χωρίς να κάνω συχνά Shrink?
    4. Ποια είναι η κατάλληλη αναλογία Host/Guest machine όσον αφορά στη μνήμη? Π.χ. σε μηχάνημα με 8GB Ram συνολικά, το να δίνω 4GB ή 6GB στο Guest έχει νόημα?
    5. Ειναι προτιμότερο να χρησιμοποιώ εφαρμογές παράλληλα κι άπο το Host κι από το Guest machine ή μόνο απότ ο Guest όλα? Π.χ. να παίζει η μουσική από το Host machine στο background και να μαι Fullscreen στο Guest Machine?
    6. Αλλες πηγές ή εργαλεία που ίσως θα μπορούσαν να βοηθήσουν?
    Ευχαριστώ για το χρόνο σας

    http://www.ppolyzos.com
    Δημοσίευση στην κατηγορία: ,
  •  06-02-2011, 14:02 63048 σε απάντηση της 63043

    Απ: Virtual Machineς ως κύριο περιβάλλον ανάπτυξης

    Καλησπέρα Πάρη,

    Μετά απο αρκετούς πειραματισμούς και πολλές χαμένες ώρες σε στήσιμο virtual μηχανημάτων κατέλειξα στα εξής:

    Δεν αξίζει να χαλάω χρόνο και πολύτιμα resources του μηχανήματος μου (δουλεύω σε laptop) για να τρέχω ένα Virtual για development όταν περνάω το 90% του χρόνου μου στον υπολογιστή στην ανάπυξη λογισμικού (όταν δηλαδή περνάω το 90% του χρόνου μου στο virtual) και όταν τα περισσότερα από τα εργαλεία που χρησιμοποιώ είναι έτσι κι αλλιώς beta (early adopter βλέπεις). Έτσι αποφάσισα ότι είναι προτειμότερο να χρησιμοποιώ το φυσικό μηχάνημα μου για όλες τις εργασίες μου και να κάνω μια φορά το εξάμηνο (καμιά φορά και παραπάνω) clean rebuild του λειτουργικού - έχω φτιάξει ένα image με τα απολύτως βασικά και το rebuild είναι θέμα λίγων ωρών.

    Εξαίρεση σε αυτή τη πολιτική αποτελεί η εγκατάσταση third party software στο οποίο είτε δεν έχω εμπιστοσύνη, είτε ξέρω ότι δεν θα χρησιμοποιήσω ποτέ ξανά πέρα από το έργο για το οποίο το χρειάζομαι. Επίσης εικονικό μηχάνημα θα χρησιμοποιήσω όταν ξέρω ότι μπορώ να παραδώσω έτοιμο το εικονικό για να μπει σε μια μηχανή παραγωγής. Σε αυτές τις περιπτώσεις χρησιμοποιώ κάποιο εικονικό μηχάνημα.

    This is my 2 cent on the subject.


    MSc Konstantinos Pantos
    MCP Software Engineer
    http://blog.pantos.name
    http://kostas.pantos.name
  •  06-02-2011, 14:31 63049 σε απάντηση της 63043

    Απ: Virtual Machineς ως κύριο περιβάλλον ανάπτυξης

    Εγώ πάλι θα ψηφίσω υπέρ του Virtual Machine. Δουλεύω σε desktop και κάνω web development. Φυσικά, να πω οτι όπως ίσως αντιλαμβάνεσαι και εσύ, το τι αξιοποιεί κανείς και το πώς εξαρτάται τόσο από τον τρόπο και το αντικείμενο εργασίας του όσο και από τις προσωπικές του προτιμήσεις. Δεν υπάρχει γενικά "σωστό" ή "λάθος", υπάρχει "με βολεύει" και "κάνει τη δουλειά που θέλω όπως τη θέλω".

    Πάμε λοιπόν: 

    To desktop μου έχει όσες εφαρμογές χρειάζομαι συχνά (office, έναν ftp client, ...παιχνίδια :) και τίποτα άλλο). Visual studio, sql server, iis κλπ κλπ βρίσκονται σε virtual machine.
    Αυτό μου δίνει τις εξής δύο δυνατότητες (εκτός των εγγενών δυνατοτήτων που έχει ένα virtual machine, π.χ. snapshots):

    1. Κατά καιρούς παίρνω backup του virtual "ως έχει" σε ένα δεύτερο μηχάνημα ή NAS, και έχω το κεφάλι μου ήσυχο.
    2. Μπορώ να "σκίσω" το desktop μου και να το ξαναστήσω, ή να αναβαθμιστώ σε ένα τελείως διαφορετικό μηχάνημα. Το μόνο που χρειάζομαι για να συνεχίσω την εργασία μου είναι το virtual machine μου, δηλαδή ένα copy.

    Εγώ έχω 6GB στο desktop (ξέρω, είναι λίγα) και δίνω 2GB στο virtual. Εχω δύο, αλλά κάθε φορά φροντίζω να έχω μόνο ένα ανοικτό. Σε άλλο configuration (στη δουλειά) εχω φτιάξει ένα vm host (hyper-v) με 12GB που τρέχει αρκετά VMs με μνήμη το καθένα από 1 ως 3 GB αναλόγως τις ανάγκες. Γενικά, δεν χρειάζονται περισσότερη για απλά πράγματα, εκτός αν θέλεις να τα "σκίσεις". 

    Ναι, το αντιμετωπίζω σαν desktop μηχάνημα, αν και δεν του έχω στήσει antivirus πέρα από τα security essentials, όμως έχει κανονικά firewall. 
    Η πρακτική μου με το virtual θα με ωφελήσει πολύ τώρα που φτιάχνω καινούριο μηχάνημα, όπως ακριβώς ανέφερα παραπάνω. Απλά θα μεταφέρω τα VMs μου εκεί, ένα copy και συνεχίζω τη δουλειά μου.

    Για το θέμα του χώρου, δυστυχώς δεν έχω κάτι να σου απαντήσω.

    Για την ερώτησή σου σχετικά με το αν πρέπει να χρησιμοποιείς εφαρμογές από το host machine, η δική μου απάντηση είναι "ναι". Αν θέλω να ακούσω μουσική, θα την ακούσω από το host. Ομως, αν θέλω να κάνω development, θα το κάνω από το virtual.

    Ενα άλλο πράγμα που έχω στο host μου για να εξασφαλίσω backups μέρα με τη μέρα, είναι οι εφαρμογές Crashplan και Syncback. Να σου περιγράψω λίγο τι κάνω με αυτές:
    - Το VM παίρνει scheduled backups του sql server σε ένα folder του - κρατάει μερικές μέρες πίσω μόνο, αν και θα μπορούσε να παίρνει μόνο την τελευταία (δες παρακάτω γιατί).
    - Το syncback στο host παίρνει file backups στo host (new or changed only) τόσο των sql backups όσο και του folder που "δουλεύω" τα διάφορα projects, ανά μία ώρα (όταν φυσικά το virtual είναι ανοιχτό). Φυσικά,απαιτείται να υπάρχει ένα share στο VM, έχω επιλέξει να έχω διαφορετικά credentials για login στο VM από ο,τι στο host (στο σπίτι δουλεύω σε workgroup), αλλά δεν "μασάει" το syncback από αυτά. :)
    - To Crashplan ανεβάζει (continuously) τα backups από το host στο cloud οπου δεν διαγράφεται τίποτα. Ετσι, πετυχαίνω να έχω μια ανεξάντλητη ιστορικότητα.

    (Φυσικά, το crashplan κοστίζει, αλλά θεωρώ οτι είναι money well spent).

    Αυτή τη διαδικασία, φυσικά, μπορώ να την επαναλάβω για όσα virtual έχω, μόνο με μία εγκατάσταση των crashplan/syncback (γι'αυτό και τα έχω στο host).
    Αν με ρωτήσεις γιατί δεν έχω κάποιο source control, η απάντηση είναι γιατί πολλές φορές δεν δουλεύω σε "αμιγές" project, αλλά σε μια αρμαθιά από customizations / configurations / σκόρπια files. Κάνω ανάπτυξη κυρίως σε Umbraco και DotNetNuke.

    Να επαναλάβω οτι αυτό είναι το δικό μου "σενάριο" χρήσης, και ίσως να βολεύει μόνο εμένα! 


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  06-02-2011, 15:42 63051 σε απάντηση της 63043

    Απ: Virtual Machineς ως κύριο περιβάλλον ανάπτυξης

    @spantos
    Κώστα, είναι σίγουρο ότι όταν έχεις φορτωμένα 2 λειτουργικά (ενα host κι ένα VM) σίγουρα καταναλώνεις πιο πολλά resources σε διαχείριση αυτών των πραγμάτων από ότι να τρεχε μόνο το host machine. 
    Κι αν ήμουν σε laptop ούτε καν θα το σκεφτόμουν, απλά στο Desktop PC δε καταλαβαίνω κάποια μείωση στην απόδοση. 
    Αυτο με τα Images το χα ξεκινήσει στην αρχή, για να γλιτώνω το στήσιμο από την αρχή αλλά 2 φορές που το χρησιμοποίησα μου έσκασε. Χρησιμοποιούσα το Acronis True Image και γι αυτό το γύρισα στα VMs. 
    Έχεις κάποιο άλλο να προτείνεις?

    @cap
    Γενικά το πώς στήνεις το περιβάλλον εργασίας είναι πιο πολύ προσωπικό γούστο, και κάτι που βολεύει εσένα μπορεί να μη βολεύει κάποιον άλλον.
    Ωραία μαγκιά αυτο με το Crashplan δε το ξερα. Χρησιμοποιούσα το dropbox για τα backups, αλλά μου φαίνεται πιο ψαγμένο το Crashplan.

    Cap said: 
    "Αν με ρωτήσεις γιατί δεν έχω κάποιο source control, η απάντηση είναι γιατί πολλές φορές δεν δουλεύω σε "αμιγές" project, αλλά σε μια αρμαθιά από customizations / configurations / σκόρπια files. Κάνω ανάπτυξη κυρίως σε Umbraco και DotNetNuke."

    Για το Source Control έχω στήσει ένα Subversion Server στο Host Machine και τα κάνω commit εκεί, τα οποία γίνονται μετά backup αλλού.

    Ξέρετε αν υπάρχει κάποιος τροπος να κάνεις monitor τα resources των VMs?

    Ευχαριστώ και πάλι.

    http://www.ppolyzos.com
  •  06-02-2011, 15:56 63052 σε απάντηση της 63051

    Απ: Virtual Machineς ως κύριο περιβάλλον ανάπτυξης

    ppolyzos:
    Ωραία μαγκιά αυτο με το Crashplan δε το ξερα. Χρησιμοποιούσα το dropbox για τα backups, αλλά μου φαίνεται πιο ψαγμένο το Crashplan.

    Χεχε, χρησιμοποιώ ΚΑΙ το dropbox. :) Αλλά όχι για backups τέτοιου τύπου, μια και το Crashplan είναι όντως πιό "ψαγμένο" και σε αφήνει και να κάνεις backups σε διπλανά PCs (compressed, compacted, differential με έξυπνο duplicate elimination). Η, ακόμα και στο pc ενός φίλου σου που έχει crashplan (encrypted). :)



    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  06-02-2011, 17:52 63053 σε απάντηση της 63052

    Απ: Virtual Machineς ως κύριο περιβάλλον ανάπτυξης

    Εγώ έχω εγκαταλείψει τα VMs (όχι όμως και τα VHDs) γιατί το κόστος τους σε IO και μνήμη είναι δυσβάσταχτο όταν δουλεύεις σε project που περιλαμβάνουν κάποιο server όπως π.χ. το .... SharePoint. Άσε που για να κάνεις development σε Sharepoint 2010 θέλεις 6 GB για να σηκωθούν όλα (SQL Server, IIS, Sharepoint app pools, Visual Studio).
    Τα 2 GB που μου περισσεύουν τα έχω κάνει Ramdrive στο οποίο έχω βάλει τα temp files, ASP.NET temp files και ... τα ίδια τα projects για να ελαχιστοποιήσω το κόστος του recompilation κάθε φορά που κάνω κάποια μικροαλλαγή. Διαφορετικά θα περίμενα 1-2 λεπτά μετά από κάθε F5.

    Για να αποφύγω απώλειες από το ramdrive και προφανώς για λόγους version control χρησιμοποιώ το Mercurial το οποίο κάνω clone με scheduled task σε ένα folder στο σκληρό κάθε 5 λεπτά, το οποίο folder είναι και synched στο dropbox. 

    Για να μπορώ να έχω διαφορετικά configurations χρησιμοποιώ VHDs με Windows 2008 R2 ή Windows 7 στα οποία κάνω απευθείας boot. Ουσιαστικά έχω φτιάξει multiboot μηχάνημα χωρίς partitions, απλά με διαφορετικά vhd drives.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-02-2011, 22:47 63054 σε απάντηση της 63053

    Απ: Virtual Machineς ως κύριο περιβάλλον ανάπτυξης

    Γι'αυτό ακριβώς λέω οτι εξαρτάται από το είδος της εργασίας. Ενα project που είχα πριν από μερικά χρόνια, ήταν ο διαχωρισμός μιας τεράστιας βάσης δεδομένων σε δύο αυτόνομες βάσεις δεδομένων, που θα λειτουργούσαν με το ίδιο software σε δύο αντίγραφα, σύμφωνα με μια αρμαθιά κριτηρίων.

    Για να επιτύχει το development των script για το διαχωρισμό, επειδή σε μεγάλο βαθμό ήταν εξαρτώμενος από τα ίδια τα δεδομένα, είχα προμηθευτεί μια πραγματική παλιά database (με σβησμένα φυσικά οποιαδήποτε ευαίσθητα δεδομένα), μεγέθους αρκετών GB, επάνω στην οποία έτρεχα τα διάφορα queries. Ε, αυτό δεν θα το έκανα ποτέ σε virtual machine! Ηθελα κάθε σπιθαμή επεξεργαστικής ισχύος και disk i/o που είχα διαθέσιμο, μια και ορισμένα queries μπορεί να έκαναν και 45 λεπτά να ολοκληρωθούν. Αρα, επέλεξα να κάνω το development σε ένα "δυνατό" physical machine (με raptor δίσκους και δεν συμμαζεύεται).



    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems