조건문 if문 if(...) {...} 형식으로 작성한다. (...) 안의 내용이 true일 경우 코드 블록이 실행된다. 실행할 코드가 한 줄일 경우 중괄호 생략 가능 let year = 2023; if(year == 2023) console.log("2023년 입니다."); if(0 || -0 || 0n || "" || null || undefined || NaN) { console.log("조건문 내의 값들은 모두 false로 변환됩니다."); console.log("이렇게 불린 문맥에서 false로 평가되는 값을 falsy한 값이라고 합니다."); } if(1 || 100 || "0" || new Date() || -3.14 || Infinity || []) { console.log("조건문 내의 ..
변수 let name = "KSH"; let age = 20; let temp = 36.5; let isChecked = false; let a = "Good", b = "Bad"; 문자(열)는 “”나 ‘’ 로 감싸져 있어야 함 JavaScript의 예약어는 변수명으로 사용 불가 변수명 숫자로 시작 불가 대소문자 구별 🙆♂️ 세미콜론 안붙어도 작동 하긴 함 변수에 저장된 값 변경 가능 상수 const PI = 3.141592; 변하지 않는, 재할당될 수 없는 값 자료형 JavaScript의 변수는 자료형과 관계없이 모든 데이터가 될 수 있다 ⇒ 자료의 타입은 존재하지만, 변수에 저장되는 값의 타입은 바뀔 수 있음(동적 타입) let m = "Message"; let n = 123; let bigN = ..
API(Application Programming Interface) 응용 프로그램에서 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스 다른 응용 프로그램의 로직을 몰라도 제공받은 API를 사용해서 정의된 기능들을 쉽게 쓸 수 있다. Interface: 어떤 장치(or 소프트웨어)간 정보를 교환하기 위한 수단/방법 응용 프로그램들의 관계를 간단한 예시로 설명하자면, 1. 손님이 식당에서 음식을 먹기 위해서는 주방장에게 주문을 해야한다. 2. 손님은 메뉴판을 통해 식당에서 제공하는 음식을 알고 주문할 수 있다. (주방장이 식당에서 내어줄 수 있는 요리는 정해져 있기 때문에 손님은 메뉴판의 음식만 주문해야 한다.) 3. 주방장은 들어온 주문대로 손님에게 음식을 요리해준다. (손님은 주방에서 무슨 일이 ..
프로그램이 제대로 돌아가기 위해서는 컴퓨터의 다양한 자원(CPU, RAM, I/O 장치 등)이 필요하다. 이런 장치들을 운영체제가 관리해 주는데, 운영체제는 여러 종류가 있기 때문에 각각 다른 방법을 통해 자원을 관리한다. 그렇다면 Linux, Windows, MacOS 이렇게 세 종류의 운영체제 위에서 프로그램을 실행시키려면 세 가지 버전의 프로그램이 필요할까? Java에는 JVM이라는 도구가 있기에 운영체제 별로 여러 프로그램을 개발하지 않아도 된다. JVM(Java Virtual machine) 말 그대로 자바를 실행시키는 가상의 기계. 운영체제를 대신해 Java 프로그램을 실행시킨다. 컴파일된 바이트 코드를 각 운영체제에 맞는 기계어로 바꿔준다. 바이트 코드를 각 운영체제에 맞는 기계어로 번역해주..
ScriptFailed: Script at specified location: xxx run as user ubuntu failed with exit code 126 왜 이 오류가 뜨는지 전혀 모르겠어서 파일과 폴더를 여러번 지우고 새로 만들고를 반복했지만 해결되지 않았다. 디렉토리의 위치도 틀리지 않았고 디렉토리와 파일의 이름도 틀린게 없는데 자꾸 오류가 떠서 고민하다가 사람들에게 도움을 구했다. 그 중 사람들의 문제해결을 자주 해주시는 동기분께서 대답을 주셨는데, 바로 해결돼버렸다. 오.. 원인은 윈도우 환경에서 만든 파일을 linux에서 실행했기 때문이다. OS 간의 개행 방식이 다르기 때문에 각 OS의 방법대로 개행문자가 변환되지 않으면 파일이 깨지는 것 같다...! 위와 같이 vim으로 문제가 ..
Auto Scaling CPU, RAM, 네트워크 트래픽 등 시스템 자원들의 값을 모니터링해서 서버의 크기를 자동조절 해주는 서비스 서버의 부하가 심해져 제대로 된 서비스를 제공하지 못하는 순간이 왔을 때 서버를 증설하고 연결 반대로 네트워크 트래픽이 줄어들 경우 리소스를 감소시키기도 함(Scale-In) 장점 Dynamic Scaling(동적 스케일링) 사용자의 요구 수준에 따라 리소스를 동적으로 스케일링 할 수 있다. Scale-Up을 할 수 있는 서버의 수는 무제한이고, 필요에 따라 즉시 scale-up이 가능하다. Load Balancing(로드 밸런싱) Auto Scaling과 Load Balancing을 함께 사용하면, 다수의 EC2 인스턴스에게 사용자가 정의한 규칙에 따라 워크로드를 분배할 ..
Scale-out 방식을 통해 과부하 문제를 대처하기로 했다면, Load Balancing이 꼭 필요하다. Load Balancing - 서버가 처리해야 할 요청을 여러 대의 서버로 나누어 처리하는 것 - 한 대의 서버로 부하가 집중되지 않게 트래픽을 관리해서 서버들이 과부하 걸리지 않게 함 - Load Balancing을 처리하는 역할을 Load Balancer가 맡음 https://aws.amazon.com/ko/what-is/load-balancing/ 로드 밸런싱이란 무엇인가요? 로드 밸런싱 설명 - AWS 로드 밸런싱은 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법입니다. 최신 애플리케이션은 수백만 명의 사용자를 동시에 처리하고 정확한 텍스트, 비 aws.am..
한 서비스에 너무 많은 사용자(클라이언트)가 접속하게 되면, 서버에는 과부하가 오기 마련이다. 과부하로 인해 서버가 원할한 서비스를 제공하지 못하는 경우, 이를 해결하는 방법은 크게 두가지가 있다. Scale-up Scale-out Scale-up(수직확장) 물리적으로 서버의 사양을 높이는 하드웨어적 방법 서버의 수가 늘어나는 것이 아니기에 프로그램 구현의 변화가 필요없음 성능 확장에 한계가 있음 성능 증가에 따른 비용 증가폭이 큼 사양을 늘린만큼 클라이언트의 요청이 다시 늘어날 경우 과부하 재발생 Scale-out(수평확장) 서버의 개수를 늘려 한 개의 서버에 주는 부하를 줄이는 방법 여러 서버로 부하를 나눠주는 대역이 필요(Load Balancer) 이론상 지속적으로 확장 가능 비교적 저렴한 비용으로..
Proxy Server 클라이언트가 서버가 소통할 때, 서버에 바로 접근하지 않고 자신을 통해 간접적으로 서버에 접근할 수 있도록 해주는 컴퓨터 시스템 또는 응용 프로그램이다. 사용 시 개인정보 보호, 캐시 사용으로 인한 속도 향상 등의 장점이 있다. Proxy server의 위치에 따라 Forward와 Reverse로 나뉜다. Forward Proxy Client가 Server에 요청을 보내면 Forward Proxy Server가 요청을 받고 Server에게 전달해주고, 응답 역시 Forward Proxy Server를 통해 Client에게 전달된다. 캐싱을 통한 빠른 서비스 이용 클라이언트는 서비스를 제공하는 서버가 아닌 프록시 서버와 소통하게 된다. 서버로 여러 클라이언트가 동일한 요청을 보낼 수..