본문 바로가기

Dev Story/아키텍처

V8 엔진 은 어떻게 자바스크립트 를 최적화 해주는가? #1 V8 엔진 은 자바스크립트 속도 향상을 위한 목적으로 설계되었다. 이런 속도를 최적화 한 방법에는 소스코드가 실행될 때 Ignition이라는 인터프리터로 한 줄씩 바이트 코드를 생성하여 캐싱 하였다가 다음번에 똑같은 구문을 반복 하였을때 최적화가 필요하다고 판단 되면 TurboFan 컴파일러 를 사용해서 머신 코드를 생성하여 매번 똑같은 작업을 방지하도록 속도 개선을 하였다. 이 두개 (인터프리터+ 컴파일러) 를 사용한 형태를 JIT(동적 컴파일러)이라고 하는데 인터프리터와 컴파일러의 장점을 취한 방식이다. V8 정의 V8 엔진 은 구글 개발팀에서 ECMAScript(ECMA - 262) 3rd 표준규격의 C++로 작성되었다. 오픈 소스 자바스크립트 컴파일러 혹은 엔진이라고 불리며 크롬 브라우저나 안드로..
Docker 를 처음 적용해보는 분들에게 도움을 드리는 글 (설정법 포함) # 개요 글이나 영상 포스팅시 요약 단어와 문장을 분석 해주는 웹앱을 만들게 되어 호스팅 할려고 이것저것 알아보던중 heroku 에 배포 하면 무료로 사용 할 수 있다는 것을 알고 기쁜 마음에 관련 문서들을 읽어 봤지만 내가 만든 앱 의 구성은 nginx+react+fastapi 로 이루어져있기 때문에 단순하게 heroku git 에 push 하면 바로 배포가 되지 않는다. 다른 방법은 없을가 방법을 찾던중 docker container 형식으로 배포할 수 있다는 것을 알게 되었고 혼자 사용 하는 서버에 배포 할 건데 굳이 docker 가 필요 할가? 라는 고민에 빠지게 되었는데 이내 필요하다는 결론에 이르게 된다. 이유는 한 서버에 (서버가 감당 할 수 있는) 여러 프로젝트를 올리게 될것이고 그곳에는 ..
성능 개선에 성공한 Master-Slave Model (feat. Nginx,Docker) 파이썬 웹앱을 클라우드에 올리기 위해 Nginx, Docker 개념을 공부하다가 유사하다고 느껴졌는데 둘다 Master-Slave Model 형태를 띄는 것 같다. ㅇ 마스터(Master), 주국(Primary) - 하나의 일을 수행하는데에 있어 동작의 주체가 되는 역할을 하는 것 . 모든 다른 슬레이브(종국)들을 제어하고 명령하는 주체 ㅇ 슬레이브(Slave), 종국(Secondary) - 종속적인 역할을 하는 것 . 주로 마스터의 지시에 따라 행동 # Nginx Nginx는 C10K (10,000 이상 요청에 대한 커넥션 생성이 되지 않아 성능이슈 가 발생 하는 것) 문제를 해결 하기 위해 개발 되었는데 이 문제를 Event-Driven-Model 로 성능 이슈를 해결 하였다. 이벤트 기반의 모델로 ..
자료구조와 알고리즘 차이점 # 자료구조 와 알고리즘 정의 “자료구조” 의 사전적의미: 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계 즉 데이터의 접근 을 효율적으로 관리 (저장,수정,삭제) 하기 위한 데이터 조직 입니다. “알고리즘” 사전적의미: 입력된 자료를 가지고 원하는 출력을 유도 하는 유한개의 규칙의 집합. 즉, 문제 해결에 필요한 계산 절차 또는 처리 과정의 순서 예시) 도서관 마다 책장에 진열되어 있는 방식 (연도별, 색인별, 종류별 등) 을 데이터 구조 그 구조안에서 원하는 책을 효율적으로 찾기 위한 논리적인 규칙 을 알고리즘 자료구조 방법론으로 인해 새로운 개발 언어들이 탄생 되고 특히 객체 지향 언어 (C#, Java) 같은 경우 세부적인 구현 방식은 몰라도 인터페이스 를 이용해서 개발을 쉽게 하는 ..
Lazy 클레스를 이용한 싱글패턴 - 실무편(DB 관리 클레스) 이 글 을 쓰는 목적은 DotNet4.0 부터 사용가능한 Lazy 클래스 는 싱글톤 적용시 간편 하면서도 멀티 쓰레딩에 안전한 방법이라 소개 하고자 포스팅 하게 되었다. (물론 많은 분들이 알고 계실테지만..) 정의: 객체 초기화 시점을 지연해서 객체가 필요한 시점에 초기화 가 이루어지고 이후 생성된 객체를 참조 하게 된다.용도: 메모리 효율을 높일수 있다, 싱글톤에 효율적으로 사용 된다. 간략하게 클레스 구조를 설명하자면 객체 생성시 new를 사용하면 바로 객체가 생성 되므로 팩토리(Factory) 패턴을 이용하여 객체를 생성한다(사용을 위한 선언과 실제 객체가 생성되는 시점을 관리 할 수 있으므로) 한번 생성된 객체는 이후에는 재사용 되므로 싱클톤(Singleton) 패턴을 띠고 있다. 출처:http..
실무에 적용한 전략패턴 (C# 기준) 안녕하세요 구독자 여러분 오늘은 디자인 패턴의 하나인 전략 패턴을 활용해실무에서 사용한 엑셀 파싱 하는 프로그램 소스를 설명 할가 합니다. 전략 패턴은 하나의 목적을 위해 다양한 전략(방법) 을 활용해만드는 패턴을 말합니다. 조금더 세부적으로 말하면 단위별로 문제 해결을 위한 알고리즘들을 정의하고각각의 알고리즘을 캡슐화 합니다 캡슐화된 알고리즘을 조합해 해결 하고자 하는 목적을 완성 시키는 전략을 말합니다. 위 패턴을 어떻게 적용 했는지 설명 하겠습니다. 아래 그림은 엑셀파일 하나를 로드 하여 각각의 탭에 있는 내용을 파싱해서 매출액을 출력 하는 프로그램을 짠 다고 가정 해봅시다. 첫번째 그림은 탭 마다 같은 내용에 매출액을 구하는 공식이 똑같기 때문에하나의 클래스 혹은 함수로 처리를 다 할 수가 있습니..