16

This is going to be a somewhat loaded question. I am programming in a company that has been around since 1962. A lot of things, especially computer / network stuff, is very dated. Let me give a bit more background.

The company already operates a Windows server. On the server, many computers have files in shared network drives, and there are some programs too. This is how company wide access to things like accounting and inventory is granted, and how files are shared. Unfortunately, there has never been a strong sysadmin play a part in any of the design. The accounting system is running on Foxpro. Files are totally chaotic. The employees seem to know their way around in general, but in order to grow and scale, we need to quickly get a handle on this network. Some of the things I see a need for:

  • A relational database, accessible via all computers on the network which will store:
    • Files (ie drawings, quotes, pictures of completed projects, etc.)
    • Employees (then we can start doing things like computerized time card entry)
    • Invoices, Payments Receivable and Inventory
    • Password management
    • Job tracking

I'd like to build custom applications on top of this database to power everything, and build APIs that allow our websites to interact with our in-house stuff. Obviously I must leave existing systems intact as I build new ones. I'm coming from a web background...and am very comfortable with Unix (I've administered dozens of servers that serve websites), PHP, and front end development. I'd like to stick with those open source technologies I already know well.

The biggest question in my mind is where to start. Do I buy a server rack and just start building a totally new network? Do I push everyone to the new network once ready, or try to use both at the same time somehow and slowly migrate away from the old?

I realize this could be a project that takes a year or more. I'd really appreciate some guidance - any resources on system design, how I get started, whatever. I'm willing to put in the work - I just need help creating a vision.

masegaloeh
  • 18,236
  • 10
  • 57
  • 106
Calvin Froedge
  • 538
  • 1
  • 6
  • 16
  • 3
    If you already have windows servers, why do you want linux servers? – Jim B May 27 '11 at 02:12
  • 2
    @Jim B, A few reasons I would: no licensing fees, dependability, networking implementation that makes sense, less disruptive technology churn, no registry nightmares, no MS Exchange... – Mike Pennington May 27 '11 at 02:21
  • 4
    @Mike - I'm not going to try and convince you either way, but I wonder how long it's been since you reviewed Windows? Server 2008, apart from the obvious licensing fees, suits your criteria you mentioned above. Just a thought - I am bias however as I am a Windows guy. It makes integration between Windows desktops and the servers a no-brainer, whereas you might be banging your head trying to integrate windows desktops into a *nix server for shares and authentication etc – Mark Henderson May 27 '11 at 02:23
  • 3
    I know practically nothing about Microsoft anything. All of my sysadmin experience is in Unix...and I love it. And as Mike mentioned... – Calvin Froedge May 27 '11 at 02:27
  • @Calvin - all good, I was mainly addressing my queries to Mike, not you. I wish you the best of luck :) – Mark Henderson May 27 '11 at 02:28
  • 1
    Anyone have experience with SME server? http://wiki.contribs.org/SME_Server:About – Calvin Froedge May 27 '11 at 02:29
  • @Mark, I work in a lab and still have to deal with Windows. Some of our software just doesn't work on Server 2008 (there are unresolved dependencies on ActiveState Tcl); so we have split our boxes between Server 2008 and Server 2003 to deal with those challenges. I still see absurd MS things all day long... they rearrange UI on every new version of windows so finding administrative applications is a challenge, MS still blocks people from (legally) running VNC, MS [*obfuscated their implementations*](http://www.usdoj.gov/atr/cases/ms_tuncom/major/mtc-00029523.htm) of LDAP & Kerberos – Mike Pennington May 27 '11 at 02:44
  • @Mark, consider *why* you are banging your head to share between Windows and Unix... it is because MS intentionally broke standard protocols just enough that you are enslaved to them. Thus, the Samba team spends man-years of effort to un-**** what they did. I worked for years in a large company that embraced open-source and did not depend on NTLM for services authentication for most things (exceptions: mail and calendaring). It is (admittedly) hard, but if you are willing to put the work in, then I say go for it (intelligently). – Mike Pennington May 27 '11 at 03:03
  • 1
    @Mike: key point: _large company_ -- not everyone has time to muck around with Samba when you're busy telling the boss why he can't sync his Blackberry because you can't install BES or why you have to manually configure every new workstation because you don't have Group Policy... or why you can't install 99% of the world's Line of Business applications on your server because it doesn't run Windows... – gravyface May 27 '11 at 03:35
  • @gravyface, there is a difference between windows applications and windows networking. I say punt windows enterprise services and networking. As you say, some windows apps may be required, but you don't have to embrace NTLM auth for many things if you have coding skills and patience – Mike Pennington May 27 '11 at 03:57
  • 1
    @Mike: who wants to invest coding skills and patience into something that works very well for 99.9% of the shops that require Windows? Look, obviously something rubbed you the wrong way, and maybe it doesn't work for you in your lab, but you're not making alot of practical sense here and not really backing it up; sounds like you're just spreading FUD to be honest. – gravyface May 27 '11 at 10:01
  • @gravyface, FUD is a serious accusation to me. Be specific. – Mike Pennington May 27 '11 at 10:21
  • @mike pennington- why would anyone want to invest in coding skills and have patience working on a problem that you could have working right out of the box? – Jim B May 27 '11 at 12:54
  • @Jim B I think I already provided ample reasons in my first comment on this post – Mike Pennington May 27 '11 at 13:32
  • 1
    @Mike - it's not like running Windows Server suddenly means that you must run Exchange, so saying that is a little FUD-ish, to be honest. – mfinni May 27 '11 at 15:22
  • I did not say that, so your statement attacks a strawman – Mike Pennington May 27 '11 at 16:09
  • 1
    @mike - You said, in your first comment, that you would pick Linux over Windows, and one of your reasons was Linux doesn't have Exchange. Well, you can run Windows without Exchange too, so bringing up Exchange is a red herring. – mfinni May 27 '11 at 20:10
  • @mfinni, the *OP* does not want to run a windows network (read the title of the question). I don't care if someone misquotes the OP, I respond to what the OP is asking about. A non-windows network. – Mike Pennington May 27 '11 at 20:25
  • @Mike - this isn't in reference to the OP, I'm talking about your comments right in this thread. You said I was "attacking a strawman." I claim that I'm not arguing with a strawman by showing you your quote. – mfinni May 27 '11 at 22:05
  • I knew you just wanted to argue... I say good luck with that. we both agree windows applications and windows networking are different. – Mike Pennington May 27 '11 at 22:43
  • This may be useful: [http://arstechnica.com/business/news/2010/02/designing-a-highly-reliable-small-medium-business-network.ars](http://arstechnica.com/business/news/2010/02/designing-a-highly-reliable-small-medium-business-network.ars) – Hax May 27 '11 at 15:42

6 Answers6

13

Please don't take offense to this but I strongly suggest you bring in a local area IT consulting firm that specializes in systems and network administration. I also came from a programming background many moons ago and learned many hard lessons on the do's and don'ts of managing a networked server environment. I (thankfully) had alot of mentors and help over the years, because without it, who knows what kind of smoldering wreckage would be left behind.

Moving right along now to your original question: I see two mistakes, one being Linux: don't get me wrong, I love Linux and use it in all kinds of various roles, but as a sole server in a small company that (again, no offense) doesn't have a full-time sysadmin is asking for trouble. Finding competent Linux administrators (and it's even harder to find ones that follow best practices) is not easy. Down the road, if you leave or you hire a new person to take over your duties, who's going to look after it?

Assuming you're under 75 end-users, I would strongly recommend Microsoft Small Business Server 2011 Standard on solid tier-1 hardware (like Dell, HP, IBM) with a 3-year on-site/4-hour replacement warranty. Have at least a RAID 1 mirrored array for the data (and another for the system if you can afford it). Get at least 8GB of RAM, 12GB is better. Invest in an offline/off-site backup: you can start with a couple of external drives or a tape drive, but something you can take off-site with you every night.

I'm also not sold on your suggestion for a custom "all-in-one" database: there are so many better, more viable software options out there, that unless you have some very specific niche requirements that only a custom solution can provide, you'd be much better off using a well-supported 3rd-party offering. You have to resist the "I can write something" programmer urges and think about supporting this solution long-term.

And finally, I think you and your employer need to decide what you role is going to be at this company. It sounds like you're new there and while you're right, they likely do need to upgrade their systems, you don't want to bite off more than you can chew and fail to provide whatever it was that you were hired there to do.

EDIT

There's a lot of opinions floating around right now, so I'm going to take a step back and hopefully provide some platform-agnostic advice that will be of use to you regardless of what you end up going with:

  1. Do a complete inventory of all systems and devices; check warranty status of hardware (if it's a Dell, IBM, etc. you should be able use the service tag to get a warranty check; if it's a white box server, they may still have some sort of identifier, but you'll have to call to find out what the status is most likely).

  2. Do a complete inventory of data: Don't trust that they have no data on their C: drives; they probably do, actually they probably have PST files all over the place of old mail. Find out what's critical, what's being backed up, what's not being backed up, how it's being backed up and whether anything is taken off-site or not. FIX THIS FIRST. RIGHT NOW. If they have no backup setup, go buy an external USB drive at a Big Box store for now and use NTBackup (it's likely on that server already) and do a full backup and take it off-site with you. If they have backup in place, go do a test restore (see below).

  3. Check patch levels on all systems (get #2 sorted out first!): not just Windows Updates, but Java and all Adobe products especially and update accordingly (might want to do #4 first so you know what machines are higher-priority than others. i.e. that workstation for the part-time staff member could stand a botched update much more than the accountant who cuts the pay checks).

  4. Talk to your users: find out what's working well, what's not working, get a feel for everyone's level of change tolerance, their comfort level with IT (you may be recruiting a helper to get things in order), and any wish lists they may have. Understand their business processes; as a sysadmin, your priority should be ensuring that the systems the business depends on to function are working in good order and to do that, you need to know how everyone uses those systems.

  5. After #1, you should have an idea of how the network's setup. Look for any old hubs that can be replaced; you'll want at least 10/100 everywhere, switch-wise. Check the firewall/router (make sure there is one), check for any open wi-fi access points, etc.

If you do go the Linux route, stick with a distro that's well-supported by the community (Ubuntu would be a good choice) and set it up on whatever hardware you can afford (as you know, a LAMP box could be an off-lease P4 workstation for now) and as isolated from the currently-working system as possible. As a learning exercise (and could pay huge dividends in a disaster recovery scenario), try to get the core applications that are running on the current server working on another Windows box first -- use your full backup you did in #2 to do a test restore; have fun with that :)

As for your test setup, you can opt to buy something beefy with lots of RAM and then you can virtualize (ESXi is free, so is XenServer, so is VirtualBox) but if the current server is Windows 2003 or older, you can likely get that FoxPro application working on an off-lease Windows XP workstation for cheap.

Now pat yourself on the back; you now have good backups; you also did a test restore and now have a better understanding of how everything works together. You also likely have a (long) priority TODO list that'll keep you busy for the foreseeable future.

Oh and when that's all done, you now have a test environment you can start building your Utopian "dream" system... or maybe take a vacation :)

gravyface
  • 13,957
  • 19
  • 68
  • 100
  • 2
    I live in a town with 2000 people. The closest interstate is an hour away. There is nobody but me. It's the family business, my grandfather started it, so I'm not looking at this from an employee perspective. I want what will build the business. I ran a web consulting company for a couple years but recently sold it and came home to be involved. No offense taken. – Calvin Froedge May 27 '11 at 02:33
  • 1
    We're at 40 end users. I'll need to check on the existing hardware. Like I said, as I have no windows experience it just kind of scares me = ) – Calvin Froedge May 27 '11 at 02:38
  • Even more reason not to go down this road; you'll have your hands full doing everything else like workstations, phones, printers, calculators (maybe not calculators, but you'll be the guy with all the spare batteries in your office). – gravyface May 27 '11 at 02:41
  • 2
    Microsoft SBS Server is a rock; we support dozens around town with no IT staff on-site. When our break/fix guys get called in, 99% of the time it has nothing to do with the server, but "Sally deleted an email, can you restore it?" or "Word crashed, can you recover my file?" – gravyface May 27 '11 at 02:44
  • SBS essentials isn't a bad choice if you absolutly have to have an on premise server as it comes with cloud services – Jim B May 27 '11 at 03:08
  • After Microsoft's BPOS two-week degradation/outage, I'm a bit leery of relying on the cloud for mission-critical stuff like Outlook/Exchange. The hybrid option looks promising though. – gravyface May 27 '11 at 03:14
  • the week long outage was Amazon - microsoft issue was a few hours on a couple different days (http://blogs.technet.com/b/msonline/archive/2011/05/13/update-on-bpos-standard-email-issues.aspx) – Jim B May 27 '11 at 12:58
  • 1
    Not what I heard: "weeks of degraded service" http://www.theregister.co.uk/2011/05/13/microsoft_bpos_apology/ – gravyface May 27 '11 at 15:22
6

While I generally prefer Linux on the server side, this is definitely not one of those situations. Stick with Windows, and you will never know the horrors of managing Windows permissions with POSIX ACLs. Don't dump files into databases, and your backups will be much easier. Build a clean Active Directory environment, and you will have time to take long lunches instead of changing users' passwords in a dozen of places every time they forget them.

You're actually trying to reinvent all kinds of wheels here:

  • Files in a database - Sharepoint.
  • Employee time tracking - probably a hundred different software products do it.
  • Passwords - Active Directory (any self-respecting software product will authenticate against AD)
  • Accounting - Great Plains or the like.

And I guarantee you that if you do try to write everything from scratch instead, your company will lose more money, your users will hate you, and your job security will be severely reduced.

Max Alginin
  • 3,284
  • 15
  • 11
  • Cool, thanks for the feedback. This definitely makes sense. – Calvin Froedge May 27 '11 at 02:40
  • Any insight on migrating from FoxPro to Great Plains? – Calvin Froedge May 27 '11 at 02:43
  • FoxPro is a database/development environment (kind of pre-Access/VB thing). If the program works/does everything they need it to do, I'd just move it over and keep good backups until you have time to migrate it to another software package (that alone will be a painful experience). – gravyface May 27 '11 at 02:55
3

I wanted to wait a bit to see what others answered but from what I can gather from your question and responses I would have a hard time justifying building out a server infrastructure at all. I would take a look at the office 365 small business solution (http://www.microsoft.com/en-us/office365/online-software.aspx) which sounds like it's exactly what you need. You don't have windows server management experience but clearly are comfortable using MS products. For all the database tasks you want to accomplish you can use sharepoint for (you also get MS acess online for those light but custom needs) Cost per user starts at $6. And if you are looking to go to dynamix great plains even that is available in a hosted solution (here is one google picked - http://www.mygpcloud.com/accounting-solutions/business-essentials.aspx).

In a nutshell I really think it's a tough call for a small business without alot of expertise to justify the expenses required to own your own infrastructure.

UPDATE:

there has been something bothering me about this question and it finally dawned on me that you are looking for looking to solve techinical problem rather than looking at business problems. EG you mention in the original post that you want to store files in a database. Why? Is there some business reason to do so? What was wrong with the fileshare? I think that before you consider things like platform and software choices it would make sense to take a look at business needs and evaluate what the potential solutions are for each set of requirements.

Jim B
  • 24,081
  • 4
  • 36
  • 60
  • Except if you have any kind of latency on your Internet connection... and if everything's in the cloud, I'd want redundant Internet connections because now you can't do *anything* locally... and if you're concerned about data privacy... or if you have legacy applications that aren't available as a hosted/cloud offering... or if you have big files to share... – gravyface May 27 '11 at 03:18
  • Latency is not a problem for 99% of the applications as almost all use local storage to cache both the app and the changes to the data. Large files actully tend to be faster in the cloud because the application generally doesn't *send* the whole doc it only loads a view. – Jim B May 27 '11 at 12:50
  • I've been meaning to try it out, but I'm always a bit cautious with new technologies (and why I like the hybrid approach, especially for existing companies...). – gravyface May 27 '11 at 15:21
  • Hybrid works it's just more expensive and unless you have regulatory reasons doesn't really buy you anything, since (at least so far) outages are recovered from before you could put your in house infrastructure into production. – Jim B May 30 '11 at 15:01
1

I would expect one of the more seasoned and eloquent people here to write a really long and authoritative post in response to your question. However, here's my best stab at it:

Step 1 : Do some research, count the number of users, the total amount of data, how is it protected from failure? Step 2 : Inventory existing hardware, count everything, servers, routers, switches, hopefully no hubs). Step 3: (My personal favorite) Decide if you can offload some services to an external provider in a cost effective fashion. For instance, for small organizations hosted e-mail is a nice thing not to have to worry about management overhead. Step 4: Determine which hardware and software are required to keep business as normal, and if there are any existing problems such as storage space, performance, etc. Step 5: Scope out a plan to remediate existing issues.

You're going to need to strike a balance here between what your business needs, what you want (to make your job easiest), and what sits nicely in between. If it were me, I'd start at the infrastructure and make sure the routing and switching is solid (read: not 10mb hubs). Then I'd gauge the age of the "server" and plan to replace it with a pair of redundant partners. If a single server has done the job for ages, a nice pair of systems would probably do the job well going forward.

As for migrating users over, that's simply a matter of planning. Like I said, start by taking inventory.

SpacemanSpiff
  • 8,753
  • 1
  • 24
  • 35
  • I've already got all of the email on rackspace cloud, as well as the websites, so don't need to worry that stuff. Taking inventory and getting to know the existing network better sounds like a solid first step = ) Thanks for your feedback. – Calvin Froedge May 27 '11 at 02:26
  • I withheld suggesting you hire a consultant because you indicated you're willing to put the time in. You may also consider getting some basic books on systems and network management. – SpacemanSpiff May 27 '11 at 03:01
1

If I were you I'd start small and make incremental improvements that cost nothing but time.

I did something similar to what you're saying over 10 years ago. Although we started with 7 employees and grew to a peak of 30 odd. There was no IT system, so I put it together.

The system I put in place back then and maintained till around 5 years ago (apart from all the recent upgrades) is still in use today and the company is still operating. At one point, it was all Linux, but mainly because we couldn't afford a windows server.

Now it's Windows server with AD and internal DNS to provide resolution for local printers and so forth. A router/firewall which is actually freebsd and doing mail scanning etc although you could get away with using pfsense or much less.

By the way, Linux is great, but Samba is a real headache and even when configured correctly and working how it should it doesn't perform nearly as well as windows server does! At the time, there were important features missing and I believe still are. So do yourself a favor and go with Windows Server.

Don't upgrade the accounting system unless you really need to. Don't fix what aint broke. Is it meeting the company needs OK? or if not then consider an upgrade to something else.

Organizing files is simply a matter of providing some management of shares and things and teaching people where to put things. It can just be a manual process. Don't put them in a database, you'll regret doing that. With a database, backup & restore becomes difficult. What if you lose a file and just want to restore a single record containing that file? in the mean time you have added other records.. now you need to merge to get the one file back yuck!

hookenz
  • 14,472
  • 23
  • 88
  • 143
  • 1
    It's meeting the needs now...but one of the main problems is that our data isn't rich enough. We don't have enough info about each product. It really needs to be cleaned up. As for database file storage, I guess I should have said I wanted the references in a database, so we could tag photos, add descriptions, categorize and search them. The images / videos would still be stored on the file system. How long did it take you to build out your server? Do you have any experience with SME server? http://wiki.contribs.org/SME_Server:About – Calvin Froedge May 27 '11 at 03:11
  • Are you selling products online? have a look at building a catelog with Magento or similar. You can maintain the catelog through it including all the product images. – hookenz May 27 '11 at 05:17
  • We are selling products online...but I would NEVER build a website with Magento. I do want to work towards an amazing ecommerce solution....but I'd like to build and control it myself. – Calvin Froedge May 27 '11 at 05:39
  • Magento was only a suggestion. Why reinvent the wheel? with many of those open source e-commerce solutions you have all the source code available. I was able to put a very simple ecommerce website up with Magento in a couple of weeks. Had I done it from scratch it wouldn't have had as many features or been built as fast or cost as little. The customer has control over what they put in there and they don't need a programmer to maintain it. I believe it's foolhardy to just say "I want to do it all from scratch". Build something where it doesn't need a programmer to maintain the catalog. – hookenz Jun 01 '11 at 00:04
  • Use a framework with an ecommerce library. I would even use Wordpress before Magento. Or shopify. If you're building ecommerce sites with Magento, I would highly suggest just looking around to see what other options you have. I started off with oscommerce and Magento and yea it's fast but you get what you pay for = ) – Calvin Froedge Jun 02 '11 at 01:18
  • "You get what you pay for" - not really. PHP is free and you get more than you pay for. As is Apache and many free database engines and Linux which you're keen on. You get what you pay for eh? For sure, you get more than nothing. As I was saying, Magento was only a suggestion, there are many others available. I haven't tried the others so I can't comment. Magento isn't the speediest cart on the planet, I can say that. My suggestion was simply not to just brush aside everything that's available and look around. – hookenz Jun 03 '11 at 03:01
1

My 2 cents unless you business is IT consulting. The ROI would better be spent having the business drive the technology and not the other way around. If you want a lab build a lab but if you to leverage technology to grow your business, hire a consultant, the TCO is lower.

@Calvin I live in a place like that. Our consultants came from the region, 2-3 hours away. Mostly they work remotely when we had a problem but come on site to do project implementation.

(writer's note: I cringe at using terms like ROI and TCO but IMHO they are relevant here).

JamesBarnett
  • 1,129
  • 8
  • 12