본문 바로가기

코딩

(133)
test - test code 작성원칙 FIRST(clean code) 빠르게(Fast) 테스트는 빨라야 한다. 테스트는 빨리 돌아야 한다는 말이다. 테스트가 느리면 자주 돌릴 엄두를 못 낸다. 자주 돌리지 않으면 초반에 문제를 찾아내 고치지 못한다. 코드를 마음껏 정리하지도 못한다. 결국 코드 품질이 망가지기 시작한다. 독립적으로(Independent) 각 테스트를 서로 의존하면 안 된다. 한 테스트가 다음 테스트가 실행될 환경을 준비해서는 안 된다. 각 테스트는 독립적으로 그리고 어떤 순서로 실행해도 괜찮아야 한다. 테스트가 서로에게 의존하면 하나가 실패할 때 나머지도 잇달아 실패하므로 원인을 진단하기 어려워지며 후반 테스트가 찾아내야 할 결함이 숨겨진다. 반복가능하게(Repeatable) 테스트는 어떤 환경에서도 반복 가능해야 한다. 실제 환경, QA 환경, 버스를 타..
AWS code 시리즈 (CI/CD) 1. AWS CodeCommit 이란 AWS CodeCommit은 Git 기반의 레포지토리를 클라우드 기반으로 제공하는 서비스입니다. 애플리케이션을 개발하면서 관리할 소스코드를 안전하게 저장하고, 제어할 수 있는 기능을 제공합니다. CodeCommit은 완전관리형 서비스로써 사용자가 자체 소스코드 제어 시스템을 운영하거나 인프라 규모 조정을 걱정할 필요없이 코드부터 바이너리까지 모든 사항을 저장할 수 있습니다. 2. AWS CodeBuild 란 AWS CodeBuild 란 애플리케이션 개발에 필요한 소스코드를 컴파일 하고 테스트 후 배포전 까지의 단계를 제공하는 서비스입니다. CodeBuild 를 사용하면 자체 빌드 서버(jenkins 등)가 필요하지 않기 때문에 서버를 직접 설정하고 패치 및 업 데이트..
CORS - CORS 란? CORS란? CORS(Cross-Origin Resource Sharing)는 출처가 다른 자원들을 공유한다는 뜻으로, 한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근하도록 하는 개념입니다. 직역하면, 교차되는 출처 자원들의 공유입니다. 다른 출처에 있는 자원을 요청한다고 하면, 이를 교차 출처 요청이라고 부릅니다. 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다. - mdn 설..
node.js - 이벤트 루프 NodeJS 란? 공식 사이트에서 확인해보면 "Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다" 라고 되어있습니다. NodeJS 의 대표적인 특징은 비동기, 이벤트 기반, 싱글스레드, Non Blocking, 확장성 등이 있습니다. 우선 Javascript 의 동작원리를 먼저 알아야 합니다. Javascript 동작원리 Javascript 는 싱글스레드 기반 콜백 큐를 사용합니다. 위의 그림처럼 Javascript 는 메모리 힙과 콜 스택으로 구성되어 있습니다. 메모리 힙은 메모리 할당이 일어나는 곳이고 콜 스택은 코드가 실행됨에 따라 호출 스택이 쌓이는 곳입니다. Javascript 는 싱글 스레드기반이기 때문에 하나의 메인 스레드와 하나의 콜 스택..
AWS - CloudFormation 이란? 1. AWS CloudFormation이란 AWS CloudFormation이란 AWS 리소스를 모델링, 설정하여 리소스 관리 시간을 줄이고, AWS에서 실행될 애플리케이션 개발에 더 많은 시간을 쏟을 수 있게 해주는 대표적인 IaC 도구입니다. IaC란? Infra-structure as a Code의 줄임말로 Infra를 코드를 통해 관리하고 프로비저닝 하는 것 작성의 난이도가 조금 있으나, 한번 작성해두면 인프라 관리/복제 등을 편하게 할 수 있습니다. 2. Template 작성 방법 AWS 리소스를 설명하고 프로비저닝 해주는 Template는 JSON 또는 YAML 형식으로 작성이 가능합니다. Template를 작성한 뒤, AWS CloudFormation 스택생성만 하면 미리 Template에 ..
JavaScript - 에러처리 'try...catch'와 에러 핸들링 보통의 스크립트에서 에러가 발생하면 스크립트가 죽고(즉시 중단되고), 콘솔에 에러가 출력됩니다. 그러나 try...catch문법을 사용하면 스크립트가 죽는 걸 방지하고, 에러를 잡아서(catch) 더 합당한 무언가를 할 수 있게 됩니다. 'try...catch' 문법 try{ // 코드 }catch (err){ // 에러 핸들링 } try...catch 동작 알고리즘은 다음과 같습니다. 먼저, try{...} 안의 코드가 실행됩니다. 에러가 없다면, try 안의 마지막 줄까지 실행되고, catch 블록은 건너뜁니다. 에러가 있다면, try 안 코드의 실행이 중단되고, catch(err) 블록으로 제어 흐름이 넘어갑니다. 변수 err(아무이름이나 사용 가능)는 무슨 ..
AWS - S3란 S3 (Simple Storage Service) 인터넷 스토리지 서비스. 용량에 관계 없이 파일을 저장할 수 있고 웹(HTTP 프로토콜)에서 파일에 접근할 수 있다. 1. 사용 이유 S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있다. 용량을 추가하거나 성능을 높이는 작업이 필요없다. 비용은 EC2와 EBS로 구축하는 것보다 훨씬 저렴 S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다. 동적 웹페이지와 정적 웹페이지가 섞여있을 때 동적 웹페이지만 EC2에서 서비스하고 정적 웹페이지는 S3를 이용하면 성능도 높이고 비용도 절감. 웹하드 서비스와 비슷하지만, 별도의..
AWS - Lambda란? AWS 람다(AWS Lambda)는 아마존 웹 서비스에서 제공하는 이벤트 기반 컴퓨팅 클라우드 서비스로, 개발자가 스토리지나 컴퓨팅 리소스를 프로비저닝하지 않고도 사용당 비용으로 기능을 프로그래밍할 수 있도록 지원합니다. 이를 서비스로서의 기능(FaaS)이라고도 합니다. 람다를 쓰면 좋은점 AWS 람다의 주요 이점 중 하나는 IT 전문가로부터 서버 관리를 추상화한다는 것입니다. 아마존은 AWS 람다를 통해 서버를 관리하므로 개발자는 애플리케이션 코드 작성에 더 집중할 수 있다. AWS는 다양한 프로그래밍 언어로 작성된 코드를 지원합니다. AWS 람다 언어에는 Node.js, 파이썬, 자바, C# 등이 있다. 개발자들은 또한 메이븐이나 그라들과 같은 코드 컴파일러 도구와 패키지를 사용하여 함수를 구축할 수..