
문제 정의 -> 환경구성 -> 알고리즘 설계 -> 구현 -> 테스트 -> 배포
계산기 프로그램을 작성하는 예시로 app 작성과정을 알아보자.
(1) 문제 정의
(2) 개발 환경 구성
(3) 알고리즘 설계
1. 프로그램 종료시 까지 반복
(4) 구현
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Calculator</title>
        <style>
            body {text-align: center;}
        </style>
    </head>
    <body>
        <h1>Calculator</h1>
        <hr>
        <form>
            <input type="text" name="nubmer" id="number1" width="200" size="5">
            <select name="operator" id="operator">
                <option selected>+</option>
                <option >-</option>
                <option >*</option>
                <option >/</option>
            </select>
            <input type="text" name="nubmer2" id="number2" width="200" size="5">
            <input type="button" onclick="calc()" value="계산">
            <input type="reset" value="reset">
        </form>
        <hr>
        <div id="result"></div>
        <script src="calc.js"></script>
    </body>
</html>
function calc(){
    var number1 = Number( document.getElementById("number1").value);
    var number2 = Number( document.getElementById("number2").value);
    var operator = document.getElementById("operator").value;
    //calc func
    if(operator === '+'){ // === 는 엄격한 비교 (변수타입까지)
        var result = number1 + number2;
    }
    else if(operator === '-'){
        var result = number1 - number2;
    }
    else if(operator === '*'){
        var result = number1 * number2;
    }
    else if(operator === '/'){
        var result = number1 / number2;
    }
    //output
    var div = document.getElementById("result")
    var output = String(number1) + ' '+ operator + ' ' + String(number2) + ' = ' + String(result);
    div.innerHTML = output; //HTML elements 변경
}
(5) 테스트

(6) 배포
웹서버를 통해서 배포 필요 + 사용자가 웹서비스에 접속 가능한 Domain name 필요
-> 웹서비스를 위한 infrastructure 구성
단독형 시스템 구성
네트워크형 시스템 구성
Server -> 요청 정보에 대한 처리 (응답 response), 항상 대기상태를 유지Client -> server에 요청| 항목 | 내용 | 
|---|---|
| Web Server Program | Apache web Server 프로그램 | 
| Web Server 동작 컴퓨터 | chleo 1000명까지 동시 접속 가능하게 설정 | 
| Web server 동작 네트워크 구성 | 단독으로 인터넷에 연결 | 
| 일반 Client 와 개발자 접속 방식 | 일반 client 접속 domain, 개발자 접속 domain 등록 | 

❗
Development( 개발 ) 와Operation( 운영 ) 합성어
Dev( 개발 )과 Ops( 운영 )을 합쳐 비지니스( User )의 요구사항을 단기간에 반영할 수 있는 품질 높은 소프트웨어를 만들고자 하는 목적을 갖는 방법론
DevOps는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합입니다.
-> Continuous Integrated, 소프트웨어 모듈을 바로바로 통합하는 방법
-> Continuous Deployment, 소프트웨어 모듈을 바로 바로 고객에게 전달하는 방법
-> 코드를 이용하여 인프라를 일괄적으로 관리
ex) Ansible (파이썬 기반)

-> 객체간의 연결관계 의미
-> 컴퓨터 네트워크 - 컴퓨터간의 연결 관계
->컴퓨터간 통신을 수행하기 위해 연결 구성
->컴퓨터간 통신은 대부분 데이터( data )를 주고 받는 경우를 의미
컴퓨터 식별 방법 - IP Address
컴퓨터내에서 동작하는 프로그램 식별 방법 - Port 번호
컴퓨터간 통신을 위한 약속 - 프로토콜( Protocol )
컴퓨터간 연결 방법 - MAC address
❗1byte - 영어 한 글자, 2byte - 한글 한 글자