분류 전체보기 367

[Python Clean Code] 1. 코드 포매팅과 도구

※ 본 포스트는 마리아노 아냐야의 을 참고하여 작성하였습니다. 1. 클린 코드의 의미 프로그래밍 언어의 진정한 의미는 아이디어를 다른 개발자에게 제공하는데 있다. 그러므로 클린코드인지 아닌지는 다른 엔지니어가 코드를 읽고 유지 관리할 수 있는지 여부에 달려 있다. 그래서 이 학습의 목표는 '파이썬의 주요 개념을 이해하고, 훌륭한 코드와 좋은아키텍쳐의 특징을 식별하여 나(팀)만의 파이썬 클린 코드의 정의를 하는 것' 이다. 2. 코드 포메팅 PEP란 Python Enhancemennt Proposal의 약자로 파이썬 개선을 위한 제안서를 의미한다. 각 제안서는 곡유한 번호르 ㄹ갖게 되는데 PEP 8번 Style Guid for Python Code에서 코딩 컨벤션에 대한 내용을 다룬다. 클린 코드는 단순히..

[DevOps] CI/CD 파이프라인 구축하기

1. CICD 파이프라인을 어떻게 구축하고 있을까? 몇 기업들의 빌드/배포 자동화 파이프라인 구축에 대해서 알아보았고, 그 중 가장 자세하고, 도움이 되었던 글은 하루에 1000번 배포하는 조직 되기 | 뱅크샐러드 이다. 파이프라인 재구축 전 상황과 pain point, 그래서 어떻게 변경했는지, 현재 어떤 식으로 운영되고 있는지가 자세히 설명되어져 있었기 때문이다. 예전에는 아래와 같은 AWS의 서비스를 사용하여 CodeBuild: 소스 코드를 컴파일하는 단계에서부터 테스트 후 배포까지의 단계를 지원하는 CI 서비스. Github과의 연결을 통해 빌드를 시작할 수 있으며 Codepipeline과 연결하여 커밋이 발생할 때마다 자동으로 빌드를 수행할 수 있음. 코드에 대한 빌드와 테스트 또한 사전 구성된..

Dev/DevOps, Infra 2021.05.16

[(IaC)Terraform] Terraform Variables 활용하기

Terraform은 HCL 문법을 가진 언어로, 변수를 정의하고 주입해서 사용할 수 있다. 지원하는 type들은 www.terraform.io/docs/language/values/variables.html에서 확인 할 수 있다. 1. Variables를 사용하는 이유 일반적으로 코드작업을 할 때 변수를 사용하는 것처럼 매번 변수 대신 해당하는 값을 직접 적어주면 너무 불편하다. 게다가 여러 서비스가 연결되어 작동하는 인프라인 경우 변수가 매우 편리하다. 2. 변수 정의하기 해당 인프라 코드, 즉 .tf 파일 어디서나 변수를 정의할 수는 있지만 보통 variables.tf 파일을 따로 만들어 그 파일에 정의하는게 편하다. variable ["변수명"] { type = [타입] default = [defa..

Dev/DevOps, Infra 2021.05.10

[(IaC)Terraform] Terraform Backend 활용하기

[AWS][Network][(IaC)Terraform] AWS Network의 구성 요소와 생성처럼 terraform apply를 하는 경우, 리소스가 생성된 후 terraform.tfstate 파일이 생성된다. 이 파일의 내용(terraform metadata; terraform knows what infrastructure it controls)이 terraform state이다. 즉, 내가 실행한 apply의 결과를 저장해놓은 상태이다. (여기서 상태란 terraform apply를 했을 시점의 상태이지, 현재 인프라의 상태를 반영해주는 것은 아니다. ) 이 state는 backend에도 저장 될 수 있다. backend가 뭐지?? 그리고 이는 어떻게 활용되고 왜 사용될까? 어떻게 쓰는걸까? 1. ..

Dev/DevOps, Infra 2021.05.09

[Network] 네트워크 계층과 네트워크 간의 연결

모두의 네트워크 를 읽고 정리한 내용입니다. 다른 네트워크에 있는 목적지로 데이터를 연결하기 위해서는 네트워크 계층의 기술이 필요 데이터 링크 계층에서는 이더넷 규칙을 기반으로 같은 네트워크에 있는 컴퓨터로는 데이터를 전송할 수 있지만, 다른 네트워크 간의 통신을 가능하게 하기 위해선는 네트워크 계층이 필요. 1. IP 1) IP 헤더 네트워크 계층에는 IP(Internet Protocol) 프로토콜이 있다. 네트워크 계층에서 캡슐화를 할 때 아래 그림과 같은 IP 헤더를 붙이고, 이렇게 데이터에 IP 헤더가 추가된 것을 IP 패킷이라고 한다. 여기에 Source IP address(출발지 IP 주소), Destination IP address(도착지 IP 주소)가 있다. 이 외의 정보들은 [TCP/IP..

[AWS][Network][(IaC)Terraform] AWS Network의 구성 요소와 생성

0. Infrastructure as Code 코드로써의 인프라란 인프라를 이루는 서버, 미들웨어 그리고 서비스 등의 인프라 구성요소들을 코드를 통해 구축하는 것이다. 이렇게 코드로 구축하게되면 재사용성, 유지보수 등의 장점을 가진다. 1. AWS VPC AWS VPC(Amazon Virtual Private Cloud)를 사용하면 AWS Cloud에서 논리적으로 격리된 공간을 프로비저닝하여 고객이 정의하는 가상 네트워크에서 AWS 리소스를 시작할 수 있다. 클라우드 위에서 생성한 리소스(EC2, RDS....등)들은 네트워크를 통해 접근하는데, 클라우드 서비스인 AWS는 다양한 고객들이 사용하는 공용공간이다. 즉, 너무 많은 리소스들이 있다. 그리고 이 리소스들에도 하나의 계정에서 생성하는 리소스들만의..

Dev/DevOps, Infra 2021.05.02

[Database] Database Index

youtu.be/ZugmrJnbvdU Database Index란 데이터베이스는 파일들의 집합으로 저장되고, 각 파일은 일반적으로 동일한 유형의 레코드들의 모임으로 이루어진다. 이 파일들은 일반적으로 디스크와 같은 보조 기억 장치에 저장된다. Index는 DBMS가 파일 내의 특정 레코드들을 빠르게 찾을(특히 SELECT) 수 있도록 하는 데이터 구조이므로 인덱스를 통하여 질의를 수행하면 응답시간이 향상된다. 인덱스의 유형은 크게 단일 단계 인덱스와 다단계 인덱스로 구분된다. Index의 장/단점 1) 장점 - 검색 속도가 빨라질 수 있다. - 그 결과 해당 쿼리의 부하가 줄어들어서, 결국 시스템 전체의 성능이 향상된다. 2) 단점 - 인덱스가 데이터 베이스의 공간을 차지하기 때문에 대략 데이터 베이스 ..

[TDD] 통합 테스트(Integration Test)

이전에 [TDD] TDD 시작하기 (Unit Test, Jest)에서 Unit Test에 대해서 알아보고 작성해보았다. 이제 Integration Test에 대해 알아보고자 한다. Integration Test 통합 테스트란 모듈을 통합하는 단계에서 수행하는 테스트로, Unit Test를 통해 각 모듈들이 잘 작동되는 것을 확인했다면 이제 이 각 모듈들을 연동해서 테스트를 수행해야하는데, 이를 통합 테스트라고 한다. 통합 테스트를 하는 이유 모듈들의 상호 작용이 잘 이루어지는지 검증하기 위해 통합하는 과정에서 발생할 수 있는 오류를 찾기 위해 Supertest 단위 테스트시에는 Jest를 사용하였는데, 통합 테스트에는 Supertest 모듈을 사용해서 진행할 수 있다. Supertest는 ExpressJ..

Dev/SW Engineering 2021.02.26