반응형
리뷰 (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 작성 과정
- 문제 정의 - 문제 이해하는 것이 가장 중요!
- 알고리즘 (Algorithm) 설계 - 일처리 순서에 대한 설계
- 구현 (Coding) - 프로그래밍 언어 사용
- 테스트 - 문제가 요구하는 사항을 정확하게 반영했는지 확인
- 배포 (Release)
- Application 개발 환경 구성
- 웹 브라우저에 실행하는 프로그램 작성 시 사용되는 대표적인 프로그래밍 언어
- 프론트엔드 (Front-End)
- 웹 브라우저에서 동작하고, 모든 동작을 관리
- 프론트엔드 기반 웹 서비스 → 정적 웹 서비스
- 프론트엔드를 위한 개발 환경 → 에디터만 있으면 된다.
- HTML - 웹 페이지 구조 표현
- CSS - 웹 페이지 구성 요소 모양
- JavaScript - 사용자와 상호 작용 (동적인 처리)
- 백엔드 (Back-End)
- 웹 서버에서 동작하고, 서버에서 모든 Application 동작을 관리
- JSP, PHP, Nodejs, ...
- 프론트엔드 (Front-End)
- 웹 브라우저에 실행하는 프로그램 작성 시 사용되는 대표적인 프로그래밍 언어
Application 작성 실습
더보기
- Application 작성 실습
- 문제 정의
- 계산기 프로그램 - 프로그램 기능
- 사칙 연산만 수행 - 프로그램 기능
- 비설치형으로 사용 - 실행에 대한 요구 사항
- 알고리즘 설계 (Algorithm, 일처리 순서)
- 구현 (Coding) - 알고리즘을 프로그래밍 언어로 구체화 하는 단계
- 테스트 - 문제 정의 요구 사항에 맞게 동작하는지 구현한 프로그램 확인
- 배포 - 운영자가 수행하는 업무
- 웹 서비스에 대한 배포를 위해서는 웹 서버 (Web server)가 필요하다.
- 사용자가 웹 서비스에 접속할 수 있는 도메인 이름이 필요하다.
- 웹 서비스를 위한 InfraStructure 구성이 필요하다.
- 문제 정의
시스템 운영 이해
- 시스템 구성 형태
- 단독형 시스템 구성
- 네트워크에 연결되지 않는 시스템
- 단독 시스템에 Application 실행 환경 구성
- 네트워크형 시스템 구성
- 요청 정보에 대한 서비스 제공 역할의 Server 환경 구성
- Server에 대한 네트워크 환경 구성
- Server
- 요청 정보에 대한 처리(응답, response)를 수행하는 컴퓨터 또는 프로그램
- 항상 대기 상태를 유지
- Client
- Server에 요청을 수행(request)하는 컴퓨터 또는 프로그램
- 필요 시에 서버에 연결하여 요청하거나 항상 연결 상태를 유지
- 단독형 시스템 구성
- 서비스 제공을 위한 시스템 구성 요소
- Server 프로그램이 동작할 컴퓨터
- 다수의 Client 접속 시에도 제대로 동작할 수 있는 환경으로 구성
- Server 프로그램 - 백엔드 프로그램
- 서비스 유형에 따라 프로그램 결정
- 웹서비스 - 웹 서버
- 데이터베이스 서비스 - 데이터베이스 서버
- 파일 서비스 - FTP 서버, 파일 서버
- 메일 서비스 - 메일 서버
- 그 외 기타 서비스 - 그 서비스를 제공하는 서버 프로그램
- 서비스 유형에 따라 프로그램 결정
- 서비스 제공을 위한 Server 프로그램
- Transaction 처리
- 로그 관리
- 방화벽
- 네트워크 구성
- 공용 네트워크
- 사설 네트워크
- Server 프로그램이 동작할 컴퓨터
예) 실습으로 만든 계산기 프로그램 배포 시스템
- 구성 요건
- Web server 프로그램? - Apache web server, Nginx, IIs, ...
- Web server 동작 컴퓨터? - 동시 접속 1,000명까지 가능하게 구성
- Web server 동작 네트워크 구성? - 단독으로 인터넷에 연결
- 일반 유저와 개발자 접속 방식? - 일반 유저 / 개발자 접속 도메인 별도 구분
- 설계
- 구축
- Apache web server 프로그램 설치
- 일반 유저와 개발자용 도메인 등록
- 운영
- 모니터링 (Monitoring)
- 로그 정보 확인
DevOps 이해
- DevOps 정의
- Development(개발)와 Operation(운영)의 합성어
- Dev와 Ops를 합쳐 비즈니스(User)의 요구 사항을 단기간에 반영할 수 있는 품질 높은 소프트웨어를 만들고자 하는 목적을 갖는 방법론
- 기본 개발 운영 체계
- 개발 부서에서 개발 된 결과물을 운영 부서에 이관하여 배포 및 운영하는 방법으로 진행
- 문제점 → Fingerprintness
- 정확하게 누가 어떤 문제를 해결해야 되는지 정의되지 않는 상황 발생
- 협업이 없어지고 엉뚱한 방향으로 문제가 해결 되는 현상
- DevOps 이해
- AWS DevOps 설명
https://aws.amazon.com/ko/devops/what-is-devops/ - Azure DevOps 설명
https://azure.microsoft.com/ko-kr/resources/cloud-computing-dictionary/what-is-devops/ - 지속적인 통합 (CI, Continous Intergration)
- 자동화 구성 요소와 문화적 구성 요소 모두를 포함
- 문제를 신속 해결하고, 품질 개선하고, 업데이트 검증 및 릴리즈에 걸리는 시간을 단축하는 것이 목표
- 지속적인 전달 (CD, Continous Deployment)
- 지속적인 통합의 확장
- 코드형 인프라 관리 (IaC, Infrastructure as a Code)
- 코드를 이용하여 인프라를 일괄적으로 관리
- AWS 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에 부여되는 고유한 번호, 유일한 번호
- IP Address
- 컴퓨터 네트워크 통신 과정
- 데이터 전송 측
- 통신할 데이터를 프로토콜에 맞추어 생성
- 데이터를 수신 할 컴퓨터의 IP Address 결정
- 데이터를 수신 할 컴퓨터의 프로그램에 대한 Port 번호 결정
- 연결 된 네트워크에 요구하는 데이터 전송
- 데이터 전달 측
- 전송할 데이터를 수신할 컴퓨터 검색 (MAC Address 사용)
- 데이터 수신 측
- 전송 된 데이터가 나에게 전송 된 데이터인지 IP Address 확인
- 데이터가 전송 될 Port 번호의 프로그램에 데이터 전달
- 수신한 프로그램에서는 프로토콜에 맞추어 데이터 해석
- 수신 데이터에 대한 처리
- 데이터 전송 측
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)
- 구체적인 것부터 시작해서 점점 일반화 시키는 방식
- 시간과 메모리 사용을 줄일 수 있다.
- 탑 다운 방식 (Top-Down)
TIF
오전 한시간 전날 했던 내용 리뷰하는 것이 좋았다.
내 나름 정리하고 했던 것을 토대로 다시 한번 짚고 넘어갈 수 있었다.
예전부터 컴퓨터를 많이 다뤄서 그런가... 아직까지 수업 자체는 크게 어렵다고 느껴지진 않았다.
이것 저것 많이 할 수 있게 다 배우고 싶어도 그러기엔 시간이 많지 않다.
구름에서 기본적으로 제공해주는 무료 강의(리눅스나 네트워크 관련)부터 시작해서 차근차근 봐야 되겠다.
DevOps에 대해서 드는 생각은...
제조업에서 생산현장이랑 영업/관리 쪽이 서로를 이해하고 협업을 통해서 생산성을 높이자!!! 랑 똑같아 보이는데..
현장에서는 일 많다고 투덜투덜... 영업/관리 쪽에서는 빨리 만들어달라고 쪼으고 안만들어주면 빌고...
고인물이 많은 제조업에서는 스타트업이나 연령대 어린 회사 아니고서는 시도조차도 못할 일 같다.
IT 쪽은 어떨지 나중에 실무로 넘어가보면 알게 되겠지만 딱히 기대는 안한다... ㅋㅋ
2022. 08. 02 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 6일차 (0) | 2023.07.05 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 5일차 (0) | 2023.07.04 |
구름 쿠버네티스 전문가 과정 6기 - 4일차 (0) | 2023.07.03 |
구름 쿠버네티스 전문가 과정 6기 - 3일차 (0) | 2023.06.30 |
구름 쿠버네티스 전문가 과정 6기 - 1일차 (0) | 2023.06.28 |