컨테이너를 쿠버네티스에 싸서 드셔보세요
·
개발
들어가며 이번 포스트는 저번 포스트에서 다뤘던 도커에 이어서 쿠버네티스에 대해 알아볼 것이다.다음 글을 매우 많이 참고하였다! 쿠버네티스 시작하기 - Kubernetes란 무엇인가?쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼입니다. 1주일에 수십억 개의 컨테이너를 생성하는 구글이 내부 배포시스템으로 사용하던 borg를 기subicura.com 등장 배경 2013년 등장한 도커는 인프라 세계를 컨테이너 세상으로 바꿔버렸다.수많은 애플리케이션이 컨테이너로 배포되고, Dockerfile을 만들어 이미지를 빌드하고, 컨테이너를 배포하는 것이 개발 프로세스의 표준으로 자리 잡았습니다.2019년 DockerCon 발표에서는 무려 1052억 번의 컨테이너 이미지 pul..
고~뤠?
·
개발
들어가며 훌륭한 개발자가 되기 위한 과정에는 수많은 난관이 존재한다.그 중에서도 도커의 늪에서 고생하는 비율이 많을 것이라고 필자는 생각한다.컨테이너니, 이미지니, 뭐니.. 초보 개발자들에게는 낯선 용어와 개념이 잔뜩 쓰인다! 이번 포스팅에서는 다음 글을 참고하여, 이러한 개념들을 확실히 정리하고자 한다! 초보를 위한 도커 안내서 - 도커란 무엇인가?도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이subicura.com 도커 (Docker) 웹 프로젝트를 진행하다보면 주 프레임워크 외에도 DBMS와 같은 또 다른 소프트웨어 프로그램들이 필요할 때가 많다.이러한 프..
코끼리 아저씨는 코가 손이래
·
개발
들어가며 스프링부트를 자주 사용하는 개발자라면 build.gradle 파일이 굉장히 익숙할 것이다.특히, 외부 라이브러리를 사용할 때 해당 파일을 많이 사용해보았을 것이다.이번 포스트에서는 해당 파일이 어떤 역할을 수행하는지와 Gradle과 Gradlew 간의 차이점을 알아보자! Gradle Groovy : JVM 위에서 동작하는 프로그래밍 언어로, Java에 Python 및 Ruby와 같은 언어의 특징을 더한 동적 객체 지향 언어이다.Gradle : Groovy 언어를 기반으로 한 오픈소스 빌드 도구 Gradle 등장 이전에는 Ant, Maven 같은 빌드 도구가 사용되었다.하지만 해당 도구들은 XML 형식을 이용하여 정적인 설정 정보를 구성했기에 구조적인 단점이 존재하였다. 이에 비해 Gradle은..
[ 우아한 기술블로그 ] 배민커넥트 배차시스템의 실거리 시스템 구축
·
개발
이 글은 우아한 기술 블로그에 게시된 [ 배차 정확도를 높이는 실거리 시스템 구축하기: OSRM, Kafka, 그리고 Redis ]를 읽고 작성한 글입니다.(https://techblog.woowahan.com/22396) 배차시스템이란? 글을 들어가기 앞서, 배민커넥트의 배차시스템에 대해 알아보자!배차시스템은 배달을 고객에게 전달할 수 있도록 적합한 라이더를 찾아 배정하는 시스템이다.이를 위해서는 주문과 라이더의 상태, 기타 속성들을 잘 고려하여 빠르고 효율적으로 배치하는 것이 중요하다. 100 개의 배달이 존재하고, 100 명의 라이더가 활동 중이라고 해보자.단순히 경우의 수를 계산하면 배차시스템은 100 * 100 = 10000 건의 계산을 수행해야 한다.그러나 이러한 계산 방식은 배달 건수와 ..
페이지네이션 (Pagination)
·
개발
페이지네이션이란? 훌륭한 개발자가 되고 싶은 김개똥 씨는 페이지네이션을 공부하기 위해 구글에 "페이지네이션"을 검색하였다.구글 서버는 "페이지네이션" 단어가 포함된 데이터를 조회하여, 김개똥 씨에게 보여줄 것이다.하지만 웹 상에서 해당 단어가 포함된 데이터는 무진장 많을 것이다.구글은 모든 데이터를 검색하여 김개똥 씨에게 응답할까?그렇지 않다!대부분의 검색 서비스는 밑에 페이지 번호를 가지고 있다. 페이지네이션은 바로 이런 것이다.서버에서 데이터를 가져올 때는 모든 데이터를 한 번에 가져올 수 없다.페이지네이션은 특정 정렬 기준으로 지정된 개수만큼 데이터를 읽는 것을 말한다. 일반적으로 많이 사용되는 페이지네이션 방법론은 2가지가 존재한다.오프셋 기반 (Offset-based Pagination)커서 기..
AST에 대한 고찰
·
개발
AST란? 배경 자바스크립트는 1995년 브렌던 아이크가 설계한 당시부터 지금까지 계속해서 발전하였다.아무 자바스크립트 프로젝트의 Dependencies만 확인해봐도 JS 툴들이 얼마나 많이 발전했는지 알 수 있을 것이다!현재는 JavaScript 툴링, 코드 압축(minification), CSS 전처리기, ESLint, Prettier 등 수많은 도구들이 존재한다. 이러한 확장 프로그램들은 프로덕션 코드에는 포함되지 않는 자바스크립트 모듈임에도 불구하고 개발 과정에서 중요한 역할을 수행한다.그렇다면 해당 모듈들은 어떻게 사용될 수 있는 것일까?왜냐하면, 이러한 도구들은 모두 AST 처리를 기반으로 구축되었기 때문이다. AST의 정의 추상 구문 트리(Abstract Syntax Tree, AST..
JVM의 JIT 컴파일러
·
개발
컴파일러와 인터프리터 컴파일러와 인터프리터는 둘 다 High-Level Language를 기계어로 변환하는 역할을 수행한다.그러나 컴파일러는 소스코드 전체를 실행 전에 기계어로 변환하지만, 인터프리터는 코드를 실행 도중에 변환한다는 차이점이 있다. 컴파일이 완료된 실행 파일은 인터프리터 방식보다 더 빠르게 실행할 수 있다.문법 오류 같은 예외는 컴파일 에러를 발생시킴으로써 초기에 발견할 수 있기도 하다.그러나, 코드가 수정될 때마다 소스코드 전체를 다시 컴파일해야 한다는 단점이 있다. 인터프리터 방식은 전체 코드를 다시 컴파일 할 필요가 없기 때문에, 코드 수정이 용이하다.또한, 시스템 간의 이식성이 뛰어나다.그러나, 매번 변환 과정을 거치기 때문에 실행 속도가 컴파일 방식에 비해 느리다. 자바 컴..
JVM과 자바의 메모리 관리
·
개발
이전 포스트에서 이어지는 내용입니다! 자바 칩 프라푸치노이번 포스트에서는 필자가 가장 좋아하는 언어인 Java를 알아보자! Java Java : 1995년 발표된 제임스 고슬링과 연구원들이 개발한 객체 지향 프로그래밍 언어 자바는 다음과 같은 영역에서 주로 사sleepzzz214.tistory.com JVM 동작 과정 JVM (Java Virtual Machine) : 자바 가상 머신 자바 컴파일러(javac)은 자바 소스코드(.java)를 클래스 파일(.class)로 변환한다.JVM은 이러한 클래스 파일(바이트 코드)을 운영체제에 상관 없이 실행한다.JVM만 설치하면 어떤 운영체제에서든 Java 파일을 실행할 수 있는 것이다. 클래스 파일은 실행되기 위해 JVM의 클래스 로더(Class Loade..