✔️Backend 30

[Clean code] Chapter 11. System

Clean Code 클린 코드 - 로버트 C. 마틴 저 를 읽고, clean code 해설 강의를 통해 제가 이해한 바를 정리한 글입니다. 이번 장을 읽으면서 머리가 많이 복잡했다. 아직까지도 시스템이라는건 너무 광범위하게만 느껴져서 온보딩 프로젝트에서 배운 3 Layer Architecture와 Dependency Injection, 머신러닝 코드를 리펙토링 할 때 머리싸매며 고민한 class의 적절한 사용, 디자인 패턴 아직도 누가 객체 지향 프로그래밍이 뭐냐고 물어보면 어버버 할 것 같은 그 객체 지향 확장성, 설계, ... 더 나아가선 MSA, 애자일까지.. 실무에서 경험하긴 했지만 아직 내 안에서는 정리되지 않은 채 파편화되어 있는 개념과 경험들이 떠올랐기 때문이다. 그러면서 동시에 앞으로 추구..

[Github, CI/CD] 특정 파일이나 폴더에 대해서만 Github Actions가 trigger되는 방법

Dockerfile이 변경되었을 때만 build를 다시해서 ECR에 push 하는 작업이 필요했다. Github Actions에서 이렇게 변경 사항이 있는 아티팩트에 대해서만 액션이 트리거되어 CI/CD를 해주는 방법은 paths selector를 사용하는 것이다. name: Deploy Analyzer image to Amazon ECR on: push: paths: # HERE! - "Dockerfile" # HERE! branches: [main, release] jobs: deploy: name: Deploy runs-on: ubuntu-latest 이 방법은 monorepo에서 github actions로 CI/CD를 구성하고자 할 때도 유용하게 사용할 수 있다. https://medium.co..

Dev/DevOps, Infra 2021.08.09

[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

[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

[Milestone 그 이후] Hosting the Docker container on Heroku for TFserving

we built deep learning model classifies pills images, and then deploy the model using TFserving with Docker. ([Milestone 그 이후] Tensorflow Model Serving) In this post, Our main focus will be on model deployment on Heroku using TFserving with Docker. Why Docker ? Because Docker containers encapsulate everything an application needs to run (and only those things), they allow applications to be shut..

[Milestone 그 이후] Tensorflow Model Serving

1. SavedModel로 내보내기 학습시킨 모델을 tf.saved_model.save()함수로 SavedModel 포맷으로 내보낼 수 있다. 모델과 이름, 버전을 포함한 경로를 전달하면 이 함수는 이 경로에 모델의 계산 그래프와 학습결과 가중치를 저장한다. model_version = "0001" model_name = "medisharp_pill_image_model" model_path = os.path.join(model_name, model_version) tf.saved_model.save(model, model_path) 그러면 - saved_model.pb: 계산 그래프를 정의 - variables: 변수값을 담고있는 폴더로, 많은 개수의 가중치를 담은 모델의 경우 변수값이 여러개의 파일로..

[Milestone Week 4(마지막 마무리)] Push Notification/개인정보 관리/로그아웃

push notification을 구현하면서 지금까지 프로젝틀를 하면서 키운 내공들+가치들이 한꺼번에 발휘되었던 것 같다. 모든 팀원들의 책임감있는 태도에 힘이 났으며, 혼자 할 때는 막막했던 것이 HJ님과 협력하니 내가 몰랐던 부분이 채워지고, 필요한 기능이 무엇인지 정확하게 파악하고, 그 기능을 구현하기 위해 정확하고 효율적인 질문/검색을 하고, 찾은 해답을 어떻게 내 상황에 맞게 적용할 수 있었다. 그리고 추가로, 언제나 답은 '공식 문서'와 '원리 파악'에 있다는 값진 깨달음도 얻었다. 🙂 이제 앞서 [프로젝트 기획 및 준비작업] 마일스톤 정하기, UX/UI 디자인, 컴포넌트 리스트업의 에서 계획한 모든 기능구현은 마무리 되었고, 내가 한 일에 대한 회고 글도 끝이 났다. 자면서도 코딩하는 꿈을 ..