반응형

전체 글 67

컴파일 이란 feat. Build

- 회사 특성상 파이썬, 자바 프로젝트를 번갈아가면서 하고 지금은 이제 코틀린까지 하게되면서 매번 헷갈렸던 개념이라 지금 이번 기회에 정리함 - 컴파일(Compile)이란 개발자가 작성한 개발 언어를 기계가 읽을 수 있는 기계어로 변환하는 과정을 말한다. - 이에 컴파일 언어란 이러한 컴파일 과정을 거쳐 JVM과 같은 기계에 넣어 기계어 코드를 실행하여 돌아가는 언어를 말한다. 이에 이러한 컴파일 언어는 기계어로 번역도 해야하는 빌드는 인터프리터 언어보다 오래 걸린다. 하지만 런타임 상황에서는 이미 기계어로 변환이 되어있기 때문에 더 빠르다 (Java, C언어) - 빌드(Build)란? : 컴파일 과정까지 포함한 과정으로 소스 코드를 실행파일로 실행하는 과정이다. (고급 언어 -> 변환 -> 저급 언어[..

Backend 언어 2020.08.17

Kotlin 시작

- 새로운 프로젝트를 하면서 이번엔 Kotlin을 통해 React로 구성되는 프론트가 사용할 API를 만들게 되어 내용 정리 시작 - 우선 코틀린은 오라클이 자바를 관리하던 썬마이크로를 인수하면서 JDK에 대해 유료화 정책을 실시하였고 구글에게 사용료를 요구하였고 이 과정에서 개발된 언어다.(Java 자체는 무료로 사용가능하였지만 JDK가 호환이 되지 않았기에 구글은 그냥 자바 언어 자체를 대체할 언어를 개발한 것) 이렇게 때문에 JVM상에서 동작하는 언어로 쉽게 보면 java 개선된 버전이라고 할 수 있다. (개선이라고 하면 또 애매한 부분이 있지만 후에 다룰 람다 지원, ; 미사용 등을 생각한다면 개선이라고 보는게 맞는 것 같다) 그리고 JS기반으로 이루어져있기 때문에 풀스택이 가능하다. - 그리고 ..

GC, 그대로 두면 아니되는 이유

- 전 포스팅, GC에 대한 나의 의식 흐름은 아래와 같이 바뀜 ~ 글을 쓰기 전 : 좋은거 아닌가 --> 글을 쓰면서 : 마냥 좋은건 아니구나 --> 글을 마무리하면서 : 잘 써야하는거구나 그래서 이 의식을 놓치기 전에 인스타그램을 예시로 후딱 정리하게씀 (인스타그램이 python garbage collection을 없앤 이유) - GC를 없애기 전의 인스타그램 상황 ~ 웹서버는 django의 multi-process mode로 동작하고 WAS는 pre_fork모드를 이용하여 uWSGI 서버를 이용한다. ~ 인스타그램은 내부적으로 master process spawning, 프로세스가 생성되고 나서 공유 메모리는 2/3에 불과했음 - 공유 메모리? : Linux kernel에서는 메모리 관리를 위하여 ..

메모리 관리 기법 GC(Garbage collection, 쓰레기 수집)

- 파이썬은 레퍼런스 카운팅 방식으로 가비지 컬렉션을 수행해 메모리를 관리한다는 것을 보고 정리해본다. - GC는 메모리 관리 기법 중의 하나로 동적으로 할당된 메모리 영역 가운데 더이상 사용할 수 없게 된 영역, 즉 어떠한 변수도 가리키지 않게 된 영역을 탐지하여 해제하는 역할을 한다. - GC의 장점 1) 유효하지 않은 포인터 접근 방지 : 이미 해제가 된 메모리 영역에 접근하는것을 방지한다. 2) 이중 해제 방지 : 이미 해제된 메모리를 다시 해제하는 버그 방지 3) 메모리 누수 방지 : 더 이상 필요하지 않은 메모리가 해제되지 않고 계속 메모리에 남아있는 버그 방지 (이 현상이 심해지면 메모리 고갈로 프로그램 강제 종료 가능) - GC 단점 1) 어떤 메모리를 해제하고 언제 해제할지 결정해야 하고..

[DRF] REST & REST API

- Django REST Framework 를 새로운 프로젝트에 사용하게 됐는데 이 전에 항상 말로만, 어렴풋이만 알고 있던 REST에 대해 확실히 잡고 가고자 한다. - 우선 지금 프로젝트에 DRF를 쓰고자 하는 이유는 크게 아래와 같다. ~ 기존 Web홈페이지, Basecamp에서 상품에 예약(구매)을 추가할 수 있었던 것을 네이버, 마이리얼트립 등 다양한 플랫폼에 이제 상품을 올려 예약을 받게 되면서 예약 Request가 들어오는 경로가 다양해져 REST를 통해 프론트엔드와 백엔드의 구분히 명확하게 필요해졌다. ~ Request들어오는 플랫폼이 다양해지면서 백엔드가 업데이트되더라도 프론트와 완전히 분리될 필요가 생김 - 구조 ~ cloud 사진 참고 - REST (Representational St..

서버 2020.01.19

Web Server 그리고 WAS

√ 시작하기 앞서 필요한 개념 - Static Page & Dynamic Page : Static Page는 Web Server가 경로를 받아 일치하는 File Contents를 로드한다. (JS, Images, Html) 즉 항상 동일한 페이지를 구현하며 Dynamic Page는 Parameter에 맞는 페이지 내용을 구현한다. √ Web Server - 정의 : 하드 웨어 : Web Server가 설치되어 있는 컴퓨터 소프트 웨어 : 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 Static Contents를 제공하는 프로그램 - 기능 : WAS를 거치지 않고 바로 Static Contents를 제공한다. Static Contents에 대한 Request는 처리하고 Dynamic Request는 ..

서버 2019.11.18

쿠키(Cookie)&세션(Session)&캐시(Cashe)

˙ 시작하기 앞서 필요한 개념 - 기본적으로 Http는 stateless, connectionless 프로토콜의 특징을 가지고 있다. 즉 클라이언트가 서버에 요청(Request)를 했을 때 해당 요청에 대한 응답(Response)를 하고 연결을 끊어 이전의 데이터를 가지고 있지 않는다 (Http 1.1부터는 Keep-alive값으로 연결을 유지하고 값을 가지고 있게 Default로 설정되어 있다.) - 이에 대해 정보를 계속 유지하고 가지고 있기 위해 고안된 방법이 캐쉬, 쿠키 그리고 세션이다 ˙쿠키 - 사용자의 브라우저에 기본적으로 저장이 되고 통신시 HTTP헤더에 저장되어 있는 데이터 - 쿠키란 클라이언트 측에 저장되는 데이터로 클라이언트가 서버에 요청할 때 쿠키 정보를 전부 전달하게 되고 서버가 이..

서버 2019.11.17
반응형