어쩌다 IT
article thumbnail
반응형

리뷰 (Review)

더보기
  • 온프레미스 (On-Premise)
    • 일반적으로 사용되고 있는 운영 방식
    • 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식을 의미
    • 초기 투자 비용 비싸고, 증설이나 유지 / 보수, 수명에 따라 교체 필요
    • 사용량 증가나 기타 상황에 대한 즉각적인 대응이 힘듦

 

  • 클라우드 (Cloud)
    • 최근 시장에 도입되고 있는 운영 방식
    • 클라우드 서비스를 제공하는 제공자로부터 관리를 받고, 해당 전문가들로부터 즉각적인 대응이 가능
    • 클라우드에 접속할 수 있는 IP만 있다면 장소 제약이 없이 작업 가능
    • 초기 투자 비용이 저렴
    • 사용량 증가나 상황에 따라 비용이 증가할 수 있음

 

  • 하드웨어의 가장 기본은 CPU (연산 / 제어 기능이 핵심)
  • CPU는 기억 기능이 없으므로 CPU만으로는 아무것도 할 수 없다.
  • CPU는 Memory와 연결 되어 있다.
  • CPU와 Memory를 연결하는 Bus system이 있다.
  • Memory (주기억장치) 는 프로그램 코드와 데이터를 저장한다.
  • I/O Device는 대표적으로 키보드 (stdin), 모니터 (stdout, stderr), HDD / SDD (보조기억장치, 2차메모리)가 있다.
  • 소프트웨어의 핵심은 H/W 제어를 통한 처리에 있다.
  • CPU가 있는 환경에서는 대부분 운영체제를 사용한다.

프로그래밍 (Programming)

  • Application 프로그램 유형
    • 단독 실행
      • 네트워크를 사용하지 않는 프로그램 (설치형)
      • ex) 메모장, 계산기 등...
    • 네트워크 연결을 통한 실행
      • 웹 서비스형 (비설치형)
        • 사용자가 웹 브라우저를 이용하여 사용하는 프로그램
      • 소켓을 이용한 서비스형 (설치형)
        • 소켓 (socket) - 네트워크 연결을 위한 기능 제공 요소, 통상적으로 O/S에서 제공함
  • Application 설치 유무에 따른 프로그램 유형
    • 설치형 프로그램
    • 비설치형 프로그램 - 웹 브라우저 사용
  • Application 작성 과정
    1. 문제 정의 - 문제 이해하는 것이 가장 중요!
    2. 알고리즘 (Algorithm) 설계 - 일처리 순서에 대한 설계
    3. 구현 (Coding) - 프로그래밍 언어 사용
    4. 테스트 - 문제가 요구하는 사항을 정확하게 반영했는지 확인
    5. 배포 (Release)
  • Application 개발 환경 구성
    • 웹 브라우저에 실행하는 프로그램 작성 시 사용되는 대표적인 프로그래밍 언어
      • 프론트엔드 (Front-End)
        • 웹 브라우저에서 동작하고, 모든 동작을 관리
        • 프론트엔드 기반 웹 서비스 → 정적 웹 서비스
        • 프론트엔드를 위한 개발 환경 → 에디터만 있으면 된다.
        • HTML - 웹 페이지 구조 표현
        • CSS - 웹 페이지 구성 요소 모양
        • JavaScript - 사용자와 상호 작용 (동적인 처리)
      • 백엔드 (Back-End)
        • 웹 서버에서 동작하고, 서버에서 모든 Application 동작을 관리
        • JSP, PHP, Nodejs, ...

 

Application 작성 실습

더보기
  • Application 작성 실습
    1. 문제 정의
      • 계산기 프로그램 - 프로그램 기능
      • 사칙 연산만 수행 - 프로그램 기능
      • 비설치형으로 사용 - 실행에 대한 요구 사항
    2. 알고리즘 설계 (Algorithm, 일처리 순서)
    3. 구현 (Coding) - 알고리즘을 프로그래밍 언어로 구체화 하는 단계
    4. 테스트 - 문제 정의 요구 사항에 맞게 동작하는지 구현한 프로그램 확인
    5. 배포 - 운영자가 수행하는 업무
      • 웹 서비스에 대한 배포를 위해서는 웹 서버 (Web server)가 필요하다.
      • 사용자가 웹 서비스에 접속할 수 있는 도메인 이름이 필요하다.
      • 웹 서비스를 위한 InfraStructure 구성이 필요하다.

간단한 프로그래밍을 통해 만든 계산기

Algorithm


시스템 운영 이해

  • 시스템 구성 형태
    • 단독형 시스템 구성
      • 네트워크에 연결되지 않는 시스템
      • 단독 시스템에 Application 실행 환경 구성
    • 네트워크형 시스템 구성
      • 요청 정보에 대한 서비스 제공 역할의 Server 환경 구성
      • Server에 대한 네트워크 환경 구성
    • Server
      • 요청 정보에 대한 처리(응답, response)를 수행하는 컴퓨터 또는 프로그램
      • 항상 대기 상태를 유지
    • Client
      • Server에 요청을 수행(request)하는 컴퓨터 또는 프로그램
      • 필요 시에 서버에 연결하여 요청하거나 항상 연결 상태를 유지
  • 서비스 제공을 위한 시스템 구성 요소
    • Server 프로그램이 동작할 컴퓨터
      • 다수의 Client 접속 시에도 제대로 동작할 수 있는 환경으로 구성
    • Server 프로그램 - 백엔드 프로그램
      • 서비스 유형에 따라 프로그램 결정
        • 웹서비스 - 웹 서버
        • 데이터베이스 서비스 - 데이터베이스 서버
        • 파일 서비스 - FTP 서버, 파일 서버
        • 메일 서비스 - 메일 서버
        • 그 외 기타 서비스 - 그 서비스를 제공하는 서버 프로그램
    • 서비스 제공을 위한 Server 프로그램
      • Transaction 처리
      • 로그 관리
      • 방화벽
    • 네트워크 구성
      • 공용 네트워크
      • 사설 네트워크

 

예) 실습으로 만든 계산기 프로그램 배포 시스템

  • 구성 요건
    • Web server 프로그램? - Apache web server, Nginx, IIs, ...
    • Web server 동작 컴퓨터? - 동시 접속 1,000명까지 가능하게 구성
    • Web server 동작 네트워크 구성? - 단독으로 인터넷에 연결
    • 일반 유저와 개발자 접속 방식? - 일반 유저 / 개발자 접속 도메인 별도 구분
  • 설계

draw.io

  • 구축
    • Apache web server 프로그램 설치
    • 일반 유저와 개발자용 도메인 등록
  • 운영
    • 모니터링 (Monitoring)
    • 로그 정보 확인

DevOps 이해

  • DevOps 정의
    • Development(개발)와 Operation(운영)의 합성어
    • Dev와 Ops를 합쳐 비즈니스(User)의 요구 사항을 단기간에 반영할 수 있는 품질 높은 소프트웨어를 만들고자 하는 목적을 갖는 방법론
  • 기본 개발 운영 체계
    • 개발 부서에서 개발 된 결과물을 운영 부서에 이관하여 배포 및 운영하는 방법으로 진행
    • 문제점 → Fingerprintness
      • 정확하게 누가 어떤 문제를 해결해야 되는지 정의되지 않는 상황 발생
      • 협업이 없어지고 엉뚱한 방향으로 문제가 해결 되는 현상
  • DevOps 이해


네트워크 이해

  • 네트워크 (Network)
    • 객체 간의 연결 관계를 의미
    • 컴퓨터 네트워크 - 컴퓨터 간의 연결 관계
  • 컴퓨터 네트워크
    • 컴퓨터 간 통신을 수행하기 위한 연결 구성
    • 컴퓨터 간 통신은 대부분 데이터(data)를 주고 받는 경우를 의미
    • 구성 요소
      • 컴퓨터 식별 방법 - IP Address
      • 컴퓨터 내에서 동작하는 프로그램 식별 방법 - Port Number
      • 컴퓨터 간 통신을 위한 약속 - 프로토콜 (Protocol)
      • 컴퓨터 간 연결 방법 - MAC Address
    • 용어 정리
      • IP Address
        • 네트워크에 연결 된 컴퓨터 식별 번호
        • IPv4 - 4byte
      • Port - 실행 중인 프로그램, 프로그램 실행 시 자동으로 부여
      • Protocol - 통신 규약, 대표적으로 HTTP
      • LAN - Local Area Network, 소규모 네트워크
      • WAN - Wide Area Network, 대규모 네트워크
      • NIC - Network Interface Card, 물리적으로 네트워크에 연결하기 위한 H/W
        • ethernet - 유선 NIC
        • 무선 네트워크 - 무선, Wifi, 3G / LTE / 5G
      • MAC Address - NIC에 부여되는 고유한 번호, 유일한 번호
  • 컴퓨터 네트워크 통신 과정
    • 데이터 전송 측
      1. 통신할 데이터를 프로토콜에 맞추어 생성
      2. 데이터를 수신 할 컴퓨터의 IP Address 결정
      3. 데이터를 수신 할 컴퓨터의 프로그램에 대한 Port 번호 결정
      4. 연결 된 네트워크에 요구하는 데이터 전송
    • 데이터 전달 측
      1. 전송할 데이터를 수신할 컴퓨터 검색 (MAC Address 사용)
    • 데이터 수신 측
      1. 전송 된 데이터가 나에게 전송 된 데이터인지 IP Address 확인
      2. 데이터가 전송 될 Port 번호의 프로그램에 데이터 전달
      3. 수신한 프로그램에서는 프로토콜에 맞추어 데이터 해석
      4. 수신 데이터에 대한 처리

ETC

  • 1bit (2진수 1자리)
  • 8bit (2진수 8자리), 256가지 경우의 수 → 1byte, 1byte = 영어 한 글자, 한글은 2byte
  • 1,024kb = 1MB
  • 1,024MB = 1GB
  • 1,024GB = 1TB

  • 알고리즘 (Algorithm)
    • 탑 다운 방식 (Top-Down)
      • 큰 틀부터 시작해서 점점 구체화 시키는 방식
      • 점화식을 이해하기 쉽다.
    • 바텀 업 방식 (Bottom-Up)
      • 구체적인 것부터 시작해서 점점 일반화 시키는 방식
      • 시간과 메모리 사용을 줄일 수 있다.

TIF

오전 한시간 전날 했던 내용 리뷰하는 것이 좋았다.

내 나름 정리하고 했던 것을 토대로 다시 한번 짚고 넘어갈 수 있었다.

예전부터 컴퓨터를 많이 다뤄서 그런가... 아직까지 수업 자체는 크게 어렵다고 느껴지진 않았다.

이것 저것 많이 할 수 있게 다 배우고 싶어도 그러기엔 시간이 많지 않다.

구름에서 기본적으로 제공해주는 무료 강의(리눅스나 네트워크 관련)부터 시작해서 차근차근 봐야 되겠다.

 

 

DevOps에 대해서 드는 생각은...

제조업에서 생산현장이랑 영업/관리 쪽이 서로를 이해하고 협업을 통해서 생산성을 높이자!!! 랑 똑같아 보이는데..

현장에서는 일 많다고 투덜투덜... 영업/관리 쪽에서는 빨리 만들어달라고 쪼으고 안만들어주면 빌고...

고인물이 많은 제조업에서는 스타트업이나 연령대 어린 회사 아니고서는 시도조차도 못할 일 같다.

IT 쪽은 어떨지 나중에 실무로 넘어가보면 알게 되겠지만 딱히 기대는 안한다... ㅋㅋ

 

 

2022. 08. 02 에 작성된 글입니다.

 

 

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!