목록분류 전체보기 (305)
Gitflow gitflow 란 Git 브랜치를 관리하기 위한 git workflow 를 말한다. 브랜치 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다. 이때 해당 브랜치는 작업 중 타인의 작업에 의해 영향을 받거나 주지 않는다. 그리고 만들어진 브랜치는 다른 브랜치와 병합(merge)함으로써 새로운 브랜치를 새로 생성할 수도 있다. 브랜치 5종류 1. master 브랜치 : gitflow 에서 병합의 기준이 되는 브랜치로, 어플리케이션을 배포하는 역할을 한다. 2. develop 브랜치 : 릴리즈 버전 개발을 진행하는 브랜치로, 어떤 기능의 구현이 필요한 경우 develop 브랜치에서 브랜치를 생성한 후 개발을 하며, 개발이 완료된 경우는 develop 브랜치에 다시 병합시키는 역할을 한다. ..
CI / CD CI / CD 란 개발의 시작부터 끝인 배포까지의 모든 단계를 자동화하여 효율적이면서도 빠르게 배포하는 것을 의미한다. CI / CD 를 사용할 경우, 애플리케이션을 보다 더 짧은 주기로 고객에게 제공할 수 있다는 장점이 있다. CI / CD 를 정확히 구분하자면, Continuous Integration : 지속적 통합 Continuous Delivery : 지속적 서비스 제공 Continuous Deployment : 지속적 배포 총 세 가지로 나뉜다. CI / CD 파이프라인 CI (Continuous Integration / 지속적 통합) CI 란 개발자를 위한 자동화 프로세스를 의미한다. CI 가 제대로 구현될 경우, 애플리케이션 코드의 변경 사항이 정기적으로 빌드&테스트를 거쳐 ..
Kubernetes Kubernetes (이하 쿠버네티스)는 컨테이너 관리자로 컨테이너 운영을 자동화하기 위한 도구다. 도커 스웜(Docker swarm) / 메소스(Mesos) 등과 같은 역할을 하는 도구라고 볼 수 있으며, 위와 같은 도구들은 일컬어 오케스트레이션 도구라고도 한다. Kubernetes Cluster 쿠버네티스 클러스터는 Kubernetes의 여러 리소스를 관리하기 위한 집합체다. 그리고 클러스터는 노드 > 파드 > 컨테이너 등이 구성되어 이루어져있다. Node ( Master node / worker node) 노드는 클러스터 안의 가장 큰 개념으로, 마스터 노드와 워커 노드로 구분된다. MasterNode 마스터 노드는 클러스터 전체(워커 노드들)를 관리하는 서버이며 클러스터에 핵심..
autoscale autoscale, 이하 오토스케일은 서버에 들어오는 트래픽은(언제 어떻게 사람들이 웹사이트에 들어올지) 예측 불가능하기 때문에, 이에 '자동적으로' 대응하기 위한 'auto', 서버 크기를 의미하는 'scale'을 붙여 만들어진 단어이다. 즉, 오토스케일은 서버 트래픽 상황에 따라 자동적으로 서버를 복제하여 크기를 키우는 서비스를 말한다. 사실 auto 라는 개념 자체는 어렵지 않으니 scale 에 대해서 설명한다. 서버 크기를 키우는 scale 에는 scale up | scale out 두 가지 종류가 있다. scale up 은 서버를 운용하는 컴퓨터의 사양 자체를 업그레이드를 시키는 것을 의미하며, scale out 은 서버를 운용하는 컴퓨터의 댓수를 늘리는 것을 의미한다. 그림으..
서버리스 (Server-less) 서버리스 서비스는 그 말마따나 서버가 없는 상태에서 서비스를 제공하는 것을 말한다. 서버가 없는데 어떻게 API를 요청 / 응답 받을 수 있겠느냐 싶다만, API 는 클라우드 제공업체(GCP || AWS 등) 가 제공하는 클라우드 펑션(Cloud Fuction)을 통해 이루어진다. 브라우저에서 API를 요청하고, 클라우드는 클라우드 함수를 통해 API 에 대해 응답한다. 혹여 해당 API 가 DB에 대한 접근을 요청하는 경우, 클라우드에 만들어둔 SQL에 접속해 응답한다. 서버리스 서비스의 장단점에 대해 얘기해보자면 다음과 같다. 서버리스 서비스는 말 그대로 서버가 없기 때문에, 일반적인 서버 배포 비용을 부담할 필요 없이 클라우드 펑션이 호출되는 경우에만 비용이 발생하..
며칠 간 filter / some / map 등과 같은 배열함수와 이중 반복문으로 풀려다가 의외로 단순히 풀렸다. 2,6,8 의 최소공배수나, 12, 8의 최소공배수가 같다는 특징때문이었는데, 이 덕분에 이전에 사용해봤던 알고리즘으로 최소공배수를 구하는 유클리드 호제법을 콜백 함수로 활용했다. function solution(arr) { function callback(n, m) { // 유클리드 호제법 let a = n let b = m while (b !== 0){ let temp = a%b a = b b = temp } return (n*m)/a } let result = arr.reduce((a,c)=>{ return callback(a,c) // 콜백 },1) return result }
HTTP http 란 Hyper Text Transfer Protocol 의 약자로, 인터넷에서 하이퍼 텍스트 문서를 교환하기 위해 사용하는 프로토콜이다. 말이야 어려운데, HTML, CSS, 텍스트 등을 전송하는 포트 80의 프로토콜이라고 이해하면 편하다. HTTPS https 란 Hyper Text Transefer Protocol over Secure Sokets Layer 의 준말로 http의 보안 문제가 제기되자 이를 보완하기 위해서 등장한 프로토콜이다. https는 문서를 암호화 & 복호화 과정을 거쳐 데이터를 전송하기 때문에 상대적으로 안전하다. SSL SSL 은 Secure Sokets Layer 의 준말로, '웹 구간 암호화(보안 소켓 계층)'을 의미한다. 보통은 https 와 같은 의미..
Firewall(DMZ) Firewall(DMZ) 란 불을 막는 벽이라는 뜻의 방화벽이라는 의미로, 네트워크 상에서의 '사고'를 막는 보안 시스템을 뜻한다. 방화벽은 미리 정의한 보안 규칙에 따라서 신뢰할 만한 사이트와 그렇지 않은 사이트를 구분하여, 신뢰하지 못하는 사이트에서 우리 사이트에 접근할 수 없게 만들어준다. 위와 같은 보안 방식을 '접근 통제'라고도 하는데, 방화벽은 이뿐만 아니라 다양한 역할을 한다. 방화벽의 역할에 대해 요약하면 다음과 같다. 접근 통제 : 신뢰할 사이트 / 신뢰하지 못하는 사이트를 구분하여, 신뢰하지 못하는 사이트의 접근을 막는다. 메세지 인증 : 스마트폰 || 브라우저에 담긴 메세지를 통해 인증 절차를 거친 뒤 접근 허용 여부를 결정한다. 사용자 인증 : 그 말마따나 ..