330 likes | 347 Vues
Learn the fundamentals of information systems, including computer components, programming, data storage, and more. Develop skills to build fully functional systems for various business uses.
E N D
ITS 145:Intro to Information Systems Instructor: Mark JamilCourse website: www.markjamil.comContact email: questions@markjamil.com
Who am I? • Long time San Diegan • Science aficionado • I am a science and computer wiz • Worked on human genome project at UCSD • Mathematical modeling of proteins • IT systems administration • Media production operations (news) • Media & Software Production Studio • Bought out by Disney and Art Institute
About this course This course will introduce students to information systems. Information Systems (IS) is a branch of science that has similarities to computer science (CS), computer engineering (CE), and information technology (IT). All 4 branches share a common background in scientific theory and applied science to a varying degree of emphasis. Information Systems (IS) is different from CS, CE, and IT because it also covers the study of how people fit into the computing industry. IS can be viewed as a jack-of-all-trades but a master of none.
Goals The overarching goal of this class is to be able to build a fully functional information system for a variety of business uses. You should also be able to discuss the scalability of each system and be able to estimate the cost of their creation as well as their running cost. • Learn about computer components. • Compare operating systems to better understand their usage. • Learn about various programming languages. • Introduction to data storage and databases. • Learn how program development is conducted. • An introduction to version control, bug reporting, and collaboration. • Brief overview of computer networking. • Learn about common server and network protocols such as DNS, SMTP, HTTP, DHCP, BGP, SNMP, etc. • Learn about virtualization and use it to deploy a variety of servers. • Brief introduction to people management relating to IS • Notably, we will look at current salaries to estimate cost • Learn a little about personality types • For the sake of this class we will use the Myers-Briggs Type Indicator (MBTI).
Grading Information • Attendance (10 points possible) • Class Participation (10 points possible) • Quizzes (20 points possible) • Assignments (30 points possible) • Final Project (30 points possible) • ----------------------------------------------------------- • 100 Points Possible Points Grade | Points Grade -------------------------------------------------------------------------------------------------------------------------- 98-100 A+ | 70-79 C 93-97 A | 60-69 D 90-92 A- | 59 or less F 88-89 B+ | 80-87 B | 80-82 B- | POSSIBLE EXTRA CREDIT • 5 Extra Credit Points - Perfect Attendance • 10 Extra Credit Points - Optional Programming Project
EXTRA CREDIT • Perfect Attendance (5 Points Extra Credit) • Must be present at all class meetings • Cannot be more than 15 minutes late to class • Optional Programming Project (10 Points Extra Credit) • Why a programming project? Because it has been my observation, that most students do not get enough practical programming education in academia. Further, programming is the foundation of almost any computing project even for those who do not intend to program professionally. Lastly, programming helps improve logical cognitive function making you better at solving complex multi-variable problems even outside of the field of computing.This project is intended to help students improve an important and relevant skill as a optional side project to our regularly scheduled program.
Hints for Getting an “A” • Attendance is important • Points just for being in class! (10 points) • Points for participating in class discussions (10 points) • Quiz questions are taken directly from discussions (20 points) • Perfect Attendance Bonus (5 points) 45 points can easily be earned by simply attending all classes and making an effort! • Further, most assignment can be completed in class!
Assessment Questionnaire (aka Quiz 1) Do you have any programming experience? If so, what languages are you familiar with? What is your academic background? On a standard corporate network, where would you place an internet modem? Explain. What computer hardware would you recommend for an news broadcast server that converts RAW feeds into low quality and high quality x265 streams? The server will use linuxHandbreak with OpenCL support. Please explain your choice. You are part of a software development team. You always feel like you are waiting for a bug fix so that you can do your job. You are getting fed up with the delays. How would you fix this problem? You work for a private corporation. You estimate the raw cost of Project X to be about $1,000,000. You know that this type of project has a 33% failure rate. How much should you budget for this project?
Computer Components Computers are a collection of components connected by a “mainboard” or motherboard. In many ways, the motherboard is like the human nervous system.
Motherboards • The main function of a motherboard is to facilitate data transfer between components. • Data is transferred using a “bus.” • Buses come in different sizes and speeds. The bigger the bus and the faster the speed, the faster a motherboard can pass data between components. • A motherboard provides various sockets, ports and slots that allow computer builders to attach components such as: • PCI slots for various cards like SCSI or video capture cards. • PCIE slots for graphic processor cards. • SATA ports for various drives (disk drives DVDRW, SSD). • Socket for a CPU. • Slots for memory. • Output power pins for fans, LED’s, coolers. • Input power pins for a power supply.
Modern Motherboards • Most modern motherboard also come with several components already soldered onto the board including: • Serial chips (USB, Firewire, etc), LAN chip, video processing chip, audio chip. • Macs have something called Thunderbolt (combination of video and serial). • Laptop motherboards usually include a Wifi chip and a media card reader.
The brain of a computer The CPU (central processing unit) is where most computation take place.
CPU • As the name implies, it processes data by loading data onto a “register” which can then be acted upon by built in operations (like add, multiply, shift, copy, branch, etc). • The language used to program a CPU is generally called “assembler.” • Every CPU manufacturer has their own assembler language. • Even within a manufacturer, different CPU’s have different assembler languages. • The good news is that most assembler languages are similar in how they handle data. Thus a “shift left” in one assembler does basically the same thing in any other assembler. • Question: CPUs are made by many different companies in many parts of the world. Why are most assembly languages similar? (Hint: remember the PowerPC & Cell Processor)
CPU Continued • Modern CPU manufacturers usually also design the bus system for the motherboard that supports their CPU. • Most motherboard makers today simply follow the specifications made by the CPU makers. We call these boards “reference boards.” • In the early days, we had two dominant CPU philosophies. CISC and RISC. • RISC emphasized speed at the cost of program complexity. RISC programs were up to 50% larger than equivalent CISC programs. • CISC emphasized ease of programming over speed resulting in loss of efficiency of up to 50% compared to RISC equivalents. • Question: Which philosophy do you suppose, won the battle in the early days of computing (up to about 2005)? • Question: Which philosophy dominate modern day computing?
CPU in Enterprise Computing • Enterprise computing is dominated by x86 and amd64 (aka x86-64) CISC design processors (from Intel and AMD). • This is due to the fact that a lot of server code has been passed down over the decades and it was written for and compiled on x86 compilers. • It costs more to write new code than to upgrade hardware. • Compare the salary of quality C/C++ developers of $100k/year to simply upgrading servers for $2,000 each. • You also run the risk of new software not working properly. Why break what isn't broken? • Lastly, Moore's prediction (no longer a law) remains somewhat true allowing legacy code to continue to be relevant despite its age. • All major enterprise Operating Systems and Type 1 hypervisors, generally run on x86-64 architecture including Linux, BSD, Windows Servers, VMWareESXi/vSphere, Red Hat Enterprise Virtualization, & MS Hyper-V.
Memory For the purposes of this class, when I say “memory” I am referring to system memory or RAM. RAM is also known as “random access memory” and is volatile in that the memory is gone when the power is shut off.
System Memory • RAM is memory used for general purpose processing. It is very fast compared to memory in permanent storage such as hard disks and SSD’s. • In general, programs that are currently running on your computer get stored in RAM for faster access speeds. If everything were stored on permanent storage, your computer will feel a lot slower. • Hard Disk speed ~ 60MB/s to 170MB/s • SATA SSD speed ~ 100MB/s to 500MB/s • PCIe SSD speed ~ 2,000MB/s to 4,000MB/s • Dual channel DDR3 RAM speed ~ 25,000MB/s • Dual channel DDR4 RAM speed ~ 60,000MB/s
Graphic Processing Unit (GPU) GPU’s are also known as “Video Cards.” They attach directly to a monitor. • As stated earlier in the motherboard section, almost all modern motherboards have a GPU of some sort soldered onto the board. • These built in GPU’s are intended for “common” workstation use such as office productivity software, web browsing, video viewing and light 3D applications. • They usually use system memory. • They are usually heavily tied to CPU resources. • For the most part, dedicated GPU’s play a very niche roll in enterprise computing however in those niche’s, they tend to be vital.
Dedicated GPU’s • Modern GPU’s are basically full computers in their own right. They have their own motherboard, the GPU is very similar to a CPU, and they have their own dedicated memory. • GPU’s are different from CPU’s in design. They are optimized for floating point calculation and multi-threading and tend to be more ‘RISC’ like than their CPU counterparts. • For that reason, they are generally faster than CPU’s for almost any sort of media application when the application is optimized to use the GPU. • Modern GPU’s come with a application programming interface (API) that allows developers to take advantage of their features (this is how video game engines are built). • Initially GPU’s were used almost exclusively for 3D gaming and 3D production. • After a while, developers realized that GPU’s can also be optimized for video processing (encoding and decoding). • Today, almost all major video production software has GPU bound optimizing using either Nvidia CUDA or OpenCL. It turns out that using CUDA or OpenCL for video encoding generally results in much faster encoding time than using CPU even when the GPU is slower and has less memory.
When to use dedicated GPU’s? So where in enterprise do you see GPU’s in the server room? • Audio/Video production servers dedicated to encoding media in real time. • News stations • Large movie studios Anywhere else? • Anywhere you need fast media processing. • Engineering workstations • Video game production • Voice/image recognition algorithms • Scientific simulations • Interactive VR • Disneyland rides (Star Tours & King Kong in Universal Studios Tour)
Data Storage Possible the most important part of any information system, is how information is stored long term.
Hard Drive Hard drives are essentially plates that spin and are read by a tiny magnetic head at the end of an arm. The speed of a hard drive is related to how fast the plates can spin. Most modern drives spin between 5400 and 10,000 rpm. The fastest hard drives move about 170 MB of data per second. Hard drives are very cheap per GB of storage they provide. They are by far, the slowest of the enterprise level storage options. Hard drives generally require more electricity and run hotter than SSD’s.
Solid State Drives • Currently you can get SSD’s in two formats. • Most SSD’s plug into a standard motherboard SATA port. • The newest SSD’s plug into a motherboard PCIe port which provides a much faster bus than the old SATA drives. • Unfortunately, many motherboards were not designed for PCIe SSD drives thus you must be careful to select a board and chassis that can accommodate the drive you wish to use. • SSD’s cost significantly more than Hard Drives per GB of data storage. • SSD’s use less power and generate less heat in real world performance. • Most modern SATA SSD’s will reach speeds of 300MB/s or higher. They generally top out at about 500MB/s. • PCIe SSD’s are fairly new and have already reached speeds over 2,000MB/s • However they are costlier than SATA SSD’s. • Thus far, there are few PCIe SANs in the commercial space.
Enterprise Storage Solutions In the enterprise space, a single drive is not nearly enough to store all the data needed for business. As demand for storage grew, the need for storage arrays became evident. Enter SAN’s and NAS’s. SAN – Storage Attached Network NAS – Network Attached Storage
SAN and NAS For the sake of this course, we will assume that these two technologies are the same except for how they are attached to computers. NAS – A drive array usually connected to a LAN via Ethernet. SAN – A drive array usually connected to a server via fiber optic cable. Due to the way they are connected, SANs are significantly faster than NAS’s thanks to the fiber optic cable and due to the overhead of the Ethernet protocol. Question: If you share a SAN on your network, does it become a NAS?
Advantages & Disadvantages SAN & NAS • You need a massive amount of storage space. • You need to be able to add more storage when you need it (scalability). • The data needs to be reliably stored indefinitely. • Even when there is an emergency like a failed drive. • The storage must be made available at all times. • Note that modern SAN and NAS arrays support hot swapping of drives. • The data needs to be isolated and not dependant on any system or user. • The data should be easy to manage. SAN • You need optimal performance. • The data needs to be tightly controlled. NAS • The storage needs to be widely available to many users.
When to use what? Question: Which type of storage array would be best for the following application? • Workstation Backup • Server Backup • Version control (like GIT) • Facebook Database • Peer to Peer data sharing • Video/Audio streaming • Video/Audio compression • Email Server • Web Server
RIAD An array of storage is great, but is there any way we can optimize the storage for specific purposes like disaster recovery, or performance? Enter RAID. RAID – Redundant Array of Independent Disks. Is a set of protocols that define how data should be stored in large arrays of disks. For this course, we will focus on RAID levels 0, 1, 10, 5, & 6 but note that other configurations do exist. Further, you can combine RAID levels such as RAID 51 RAID 0 – For all data, split the data between drives so that we can read it faster. (striping) RAID 1 – For all data, make an exact copy the data to another disk. (mirroring) RAID 10 – Mirror then Stripe. RAID 01 – Stripe then Mirror. (unpopular) Question: Why do you suppose that RAID 01 is frequently avoided? Question: Can you think of any practical uses for RAID 0?
RAID Continued RAID 5 – Split the data between drives so that we can read it faster AND maintain one copy across the array (using XOR operations). (Striping with parity). • Due to the math involved, writing to a RAID 5 array is slower than lower RAID levels. • Reading from a RAID 5 array is nearly identical to RAID 0 because the parity data is skipped. ( O(n-1) ) • RAID 5 can lose 1 drive and still maintain all data. • RAID 5 requires at least 3 drives to operate. • It is generally recommended to have 1 extra hot spare for RAID 5. RAID 6 – Split the data between drives so that we can read it faster AND maintain two copies across the array (using XOR operations). (Striping with double parity). • Due to the math involved, writing to a RAID 6 array is slower than lower RAID levels. • Reading from a RAID 6 array is nearly identical to RAID 0 and RAID 5 because the parity data is skipped. ( O(n-2) ) • RAID 6 can lose 2 drives and still retain all data. • RAID 6 requires at least 4 drives to operate.
Which RAID for what? Question: What type of RAID would be best for the following application? • Data Backup • Version control (like GIT) • Google Database • Peer to Peer data sharing • Video/Audio storage • Video/Audio compression • Email Server • Web Server • Server Clusters