목록개발 (312)

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 마스터 노드는 클러스터 전체(워커 노드들)를 관리하는 서버이며 클러스터에 핵심..

서버리스 (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) 란 불을 막는 벽이라는 뜻의 방화벽이라는 의미로, 네트워크 상에서의 '사고'를 막는 보안 시스템을 뜻한다. 방화벽은 미리 정의한 보안 규칙에 따라서 신뢰할 만한 사이트와 그렇지 않은 사이트를 구분하여, 신뢰하지 못하는 사이트에서 우리 사이트에 접근할 수 없게 만들어준다. 위와 같은 보안 방식을 '접근 통제'라고도 하는데, 방화벽은 이뿐만 아니라 다양한 역할을 한다. 방화벽의 역할에 대해 요약하면 다음과 같다. 접근 통제 : 신뢰할 사이트 / 신뢰하지 못하는 사이트를 구분하여, 신뢰하지 못하는 사이트의 접근을 막는다. 메세지 인증 : 스마트폰 || 브라우저에 담긴 메세지를 통해 인증 절차를 거친 뒤 접근 허용 여부를 결정한다. 사용자 인증 : 그 말마따나 ..

Jest Jest 란 페이스북에서 만든 것으로, 완성한 각종 기능들이 정상 작동하는지 파악하는데 도움을 주는 라이브러리이다. 해당 라이브러리는 NestJS에 내장되어 있어 쉽게 사용이 가능하다는 특징을 가지고 있다. Jest 가 필요한 이유에 대해 가볍게 설명하자면, 개발자의 의도대로 작동하고 있던 API 라고 하더라도 타 API나 함수가 개입하게 된 후에도 이전처럼 정상작동한다는 보장이 없을 뿐더러, 매번 기능을 추가할 때마다 기존의 API를 일일히 모두 정상작동하는지 확인할 수도 없는 노릇이다. 하지만 Jest 를 사용하게 되면 TestCode를 작성해 둘 경우 테스트를 통해 한번에 모든 기능들의 작동을 확인할 수 있다는 장점을 가진다. 테스트를 진행하는 방식으로는 unit test : 프로그램 내 ..