본문 바로가기

전체 글86

성능 개선의 수치화 - 2 (검색 성능 개선을 위한 Elastic Search) 이전 글에서 언급하였듯이 기존 like 연산자에서 성능 개선을 목적으로 Elastic Search로 변경하였으나 정확한 수치화를 하지 못했기 때문에 JMeter 사용법을 알아보았고 이제 정확한 수치화를 진행해보겠다. 각 페이지별(카테고리) search 기능을 별도로 like 연산자로 구현하였으나 통합 검색 기능을 구현하는 것으로 의견이 좁혀졌으며 각각의 카테고리별로 search 기능을 두었을땐 데이터가 많지 않아 like 연산자를 이용하여도 사용에 불편함이 없을정도로 빨랐으나 통합 검색으로 변경 후 데이터량이 급격히 늘어났기 때문에 like 연산자를 이용한 search 기능은 답답하게 느껴졌었다. 그것은 나 뿐만 아니라 사용자 피드백을 받았을 당시에도 마찬가지였고, like 연산자를 이용하여 통합 검색을.. 2023. 5. 31.
성능 개선의 수치화 - 1 (JMeter 사용법) 기존 프로젝트에서 성능 개선을 목적으로 LIKE연산자를 이용하여 구현하였던 검색 기능을 Elastic Search를 사용한 경험이 있으나 정확히 얼마나 개선되었는지 혹은 역으로 느려졌는지 수치화가 필요하다는 생각이 들어 JMeter를 이용하여 확인하기로 하였다. JMeter 설치부터 테스트 결과까지 확인해보자. 1. JMeter란? Apache에서 만든 자바로 만들어진 웹 어플리케이션 성능 테스트 오픈 소스입니다. JMeter를 이용해서 아래와 같은 테스트를 할 수 있습니다. - 웹 - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …) - SOAP / REST 웹 서비스 - FTP - JDBC - LDAP - JMS - Message-oriented middleware (MO.. 2023. 5. 29.
프로그래밍 언어 (Programming Language)와 스크립트 언어 (Scripting Language)의 차이점은 무엇인가요? 프로그래밍언어란? -프로그래밍 언어는 컴퓨터 시스템을 작동시키는 소프트웨어를 만들기 위한 언어이다. 스크립트언어란? - 기존에 이미 존재하는 소프트웨어를 제어하기 위한 용도로 쓰이는 언어이다. - 인터프리터 형식의 언어 - 수정이 빈번하게 일어나는 곳에서 쓰인다. 프로그애밍 언어와 스크립트 언어의 차이점 - 컴파일 vs 인터프리터 : 일반적으로 프로그래밍 언어는 컴파일되어 기계어로 변환된 후 실행되지만 스크립트 언어는 인터프리터에 의해 한 줄씩 해석되고 실행된다. 프로그래밍 언어의 경우 컴파일 단계에서 미리 최적화되어 실행파일이 생성되므로 실행 속도가 빠를 수 있다. 스크립트 언어는 실행시간에 해석되기 떄문에 프로그램의 실행 속도는 상대적으 로 느릴 수 있다. - 정적 타입 vs 동적 타입 : 많은 프로.. 2023. 5. 26.
웹 서버 (Web Server)와 웹 어플리케이션 서버 (Web Application Server)의 차이점은 무엇인가요? 웹 서버란? - 웹서버는 하드웨어, 소프트웨어 혹은 두개가 같이 동작하는 것을 의미할 수 있습니다. - 소프트웨어 측면: 웹 서버는 HTTP와 같은 프로토콜을 통해 넘어온 클라이언트의 요청에 HTML과 같은 웹 페이지로 응 답 하는 소프트웨어다. 대표적인 예로 nginx, apach가 있다. 이 소프트웨어들은 호스팅하고 있는 서버(컴퓨터)에서 웹 페이지의 컴포넌트 파일들(html, image, css, javascript)에 어떻게 접근하는지를 관리한다. - 하드웨어 측면: nginx나 apach와 같은 소프트웨어가 실제로 동작하고, 웹 페이지의 데이터를 실제로 저장하는 서버 (컴퓨터)를 의미한다. 웹 서버는 인터넷에 연결되어 IP주소로 식별되고, 이 주소를 통해 클라이언트와 연결된다. 웹 어플리케이션 .. 2023. 5. 25.
자바스크립트 (JavaScript)의 호이스팅 (Hoisting)이란 무엇인가요? 자바스크립트 (JavaScript)의 호이스팅 (Hoisting)은 코드 실행 전에 변수와 함수 선언을 끌어올리는 동작을 말하는 것 호이스팅은 자바스크립트 엔진이 스크립트를 처리하기 전에 소스 코드를 미리 확인하여 실행 컨텍스트에 해당 변수와 함수를 등록하는 과정을 의미한다. 변수 호이스팅은 변수 선언이 해당 범위의 최상단으로 끌어올려지는 것을 의미한다. 즉, 변수를 선언하기 전에 변수를 사용하는 것이 가능해지지만 변수의 초기화는 실제 선언 위치에서 이루어지기 떄문에 호이스팅으로 인한 변수의 값이 undefined로 출력된다 함수 호이스팅은 함수 선언문을 해당 범위의 최상단으로 끌어올리는 것을 의미한다. 이렇게 하면 함수를 선언하기 전에 호출할 수 있다. console.log(x); // undefine.. 2023. 5. 24.
정규 표현식 (Regular Expression)에 대해 설명해보세요. 정규 표현식 (Regular Expression 또는 Regex)은 문자열에서 특정 패턴을 찾거나 대체, 추출하는데 사용되는 패턴 기반의 텍스트 처리도구이다. 정규 표현식은 문자열의 유효성 검사, 텍스트 검색 및 대체, 문자열 분할 등 다양한 문자열 작업에 유용하다. 정규 표현식은 패턴을 정의하는 문자열이다 이 패턴은 문자열의 일부 또는 전체와 일치하는 문자 조합을 표현한다. 패턴은 특정 문자, 문자 클래스,메타 문자, 반복, 그룹화 및 조건부 등을 포함할 수 있다 일반적으로 정규 표현식에서 사용되는 메타 문자 몇가지는 아래와 같다 ' . ' (마침표): 어떤 문자 하나와 일치한다 ' [] ' (문자 클래스): 괄호 내에 있는 어떤 문자와 일치한다. ' * ' (별표) : 앞의 요소가 0회 이상 반복되는.. 2023. 5. 23.
멀티스레딩 (Multithreading)과 멀티프로세싱 (Multiprocessing)의 차이점은 무엇인가요? 멀티스레딩 (Multithreading) - 하나의 프로세스 내에서 여러 스레드를 생성하여 작업을 동시에 수행하는 것 스레드는 프로세스의 자원을 공유하며 메모리 공간을 공유하는 특성을 가진다 멀티프로세싱 (Multiprocessing) - 여러 독립적인 프로레스를 생성하여 각각의 프로세스가 독립적으로 작업을 수행하는 것 프로세스는 각각 자체 메모리 공간을 가지고 있으며 프로세스 간의 통신을 위해 별도의 메커니즘이 필요하다 차이점 1. 자원공유 멀티스레딩 : 스레드는 하나의 프로세스 내에서 실행되기 떄문에 메모리와 자원을 공유할 수 있다. 이로 인해 데이터 공유가 빠르고 효율적이지만 공유 자원에 대한 동시 접근으로 인한 동기화 문제가 발생할 수 있다. 멀티프로세싱 : 프로세스는 독립적으로 실행되기 때문에 .. 2023. 5. 22.
클라우드 (Cloud) 컴퓨팅에 대해 설명해보세요. 클라우드 (Cloud) 컴퓨팅은 인터넷을 통해 기존의 로컬 컴퓨터 또는 데이터 센터에 있는 컴퓨팅 자원을 사용하는 대신 필요한 컴퓨팅 리소스를 인터넷을 통해 제공하는 컴퓨팅 모델이다 클라우드 컴퓨팅은 사용자가 유연하고 확장 가능한 IT 인프라와 서비스에 접근할 수 있게 한다 일반적으로 클라우드 컴퓨팅은 아래와 같은 특징을 가지고 있다 1. 온디맨드 서비스 : 사용자는 필요한 만큼의 컴퓨팅 리소스를 필요한 시점에 신청하고 사용할 수 있다 이는 유연성과 탄력성을 제공하며 사용량에 따라 비용을 조정할 수 있다 2. 네트워크 접근성 : 클라우드 서비스는 인터넷을 통해 어디서나 접근할 수 있다 이는 지리적 제약을 해소하고 원격 작업과 협업을 용이하게 한다 3. 공유 리소스 : 클라우스 서비스는 여러 사용자가 동시.. 2023. 5. 21.
모듈 (Module)이란 무엇인가요? Node.js에서 모듈을 사용하는 방법은 무엇인가요? 모듈 (Module)은 관련된 함수, 변수, 클래스 등을 하나로 묶어서 독립적으로 작동하며 필요한 곳에서 가져와 사용할 수 있다. 모듈화는 코드의 가독성, 재사용성, 유지 보수성을 향상시키는 데 도움이 된다. Node.js는 자바스크립트 런타임 환경으로 모듈 시스템을 내장하고 있다 모듈 사용 방법 1. 모듈 생성 : 자바스크립트 파일로 모듈을 생성한다. 모듈 내부에는 관련 함수, 변수, 클래스 등을 정의한다 2. 모듈 내보내기 : 'module.exports' 객체를 사용하여 모듈에서 외부로 공개할 항목을 지정한다. 이 객체에서 추가한 항목은 모듈을 사용하는 곳에서 접근할 수 있게 된다. 3. 모듈 가져오기 : 다른 파일에서 모듈을 가져와 사용하려면 'require' 함수를 사용한다. 'require' .. 2023. 5. 4.