분류 전체보기 90

3년차 개발자 2023년 2분기 회고

1분기 회고를 작성할때 사용한 시간이 과했다는 생각이 들었어서 조금 힘을 덜주기로 했다. 무엇보다 회고 작성의 목적은 "글 쓰기 능력 향상"이 아니라 "과거를 돌아보는 것" 이기 때문이다. 1. 목표와 결과 비교 2분기 목표는 k8s강의 마저 듣기, 개발도서 한권 읽기, DB 공부하기 였다. 1-1 k8s 강의 마저듣기 결론을 말하자면 다 못들었다. 강의를 마저 다 못들었다. 도커파트가 끝나고 쿠버네티스 파트가 시작되면서 어느정도 예상한 부분인데 어쨌든 다 못들었다. 이유는 단순하다. 억지로 공부하는 느낌이 강하게 들었고 이로 인해 머릿속에 들어오지 않았기 때문이다. 1-2 개발도서 한권 읽기 목표는 "클린코드, 디자인패턴, 리팩토링, 클린 아키텍처 중 한가지를 정해서 공부하는 것" 이었고 그중 리팩토링..

생각정리 2023.07.09

고수준 컴포넌트와 저수준 컴포넌트에 대한 정리

최근 클린아키텍처 책을 다시 읽고 있는데 고수준과 저수준에 대한 개념이 자꾸 헷갈려서 정리해야겠다고 결심했다. (클린 아키텍쳐 책 노잼이다....) 고수준 컴포넌트 고수준 컴포넌트는 더 큰 규모의 기능을 수행하는 독립적인 모듈이나 요소이다. 일반적으로 높은 수준의 추상화를 제공하며, 사용자 또는 다른 컴포넌트와의 상호작용을 관리한다. 예를 들어, 웹 애플리케이션의 고수준 컴포넌트는 사용자 인터페이스, 비즈니스 로직, 데이터베이스 접근 등을 포함할 수 있다. 이러한 컴포넌트들은 애플리케이션의 주요 기능을 담당하며, 상위 수준에서 애플리케이션을 구성한다. 저수준 컴포넌트 저수준 컴포넌트는 고수준 컴포넌트의 내부에서 동작하며, 더 작은 규모의 기능을 수행하는 모듈이나 요소이다. 이러한 컴포넌트는 보통 고수..

Architecture 2023.07.08

sharp: Cannot find module '../build/Release/sharp-linuxmusl-x64.node'

mac (intel)에서는 멀쩡히 설치되고 돌아가던 sharp 라이브러리가 dev 서버에 배포하니 패키지 설치가 되지 않았다. 대략 에러로그는 다음과 같았다. Something went wrong installing the "sharp" module Cannot find module '../build/Release/sharp-linuxmusl-x64.node' ... Possible solutions: - Install with verbose logging and look for errors: "npm install --ignore-scripts=false --foreground-scripts --verbose sharp" - Install for the current linuxmusl-x64 runti..

개발 이슈 2023.06.26

EC2란 무엇인가

EC2가 무엇인지 대충은 알고 있는데 맞는건지 확신이 없어서 알아보기로 했다. 정리한다고 머리에 다 들어오는 것은 아니지만 한번 정리해두면 다음에 까먹었을때 다시 보면 기억에 도움이 되서 대충이나마 작성한다. EC2란? EC2 에 대해서 AWS에서는 다음과 같이 설명했다. Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 사용하여 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다. Amazon EC2에서는 ..

DevOps 2023.05.27

전략 패턴 (Strategy Pattern)

전략 패턴 (Strategy Pattern) 전략 패턴은 객체가 특정 동작 또는 알고리즘을 실행할 때 유연성을 제공하는 디자인 패턴입니다. 이 패턴은 동적으로 알고리즘을 교체하거나 다양한 알고리즘을 선택할 수 있는 구조를 제공합니다. 전략 패턴은 알고리즘의 구현을 캡슐화하고, 알고리즘을 사용하는 객체와 독립적으로 변경할 수 있도록 합니다. 특징 - 유연한 알고리즘 교체 전략 패턴은 알고리즘을 독립적으로 정의하고, 클라이언트에서 알고리즘을 교체할 수 있도록 합니다. 이는 실행 중에 다른 전략으로 쉽게 전환할 수 있으며, 알고리즘의 변경이 클라이언트 코드에 영향을 주지 않습니다. - 객체 간 결합도 감소 전략 패턴은 알고리즘을 전략 객체로 캡슐화하여 클라이언트와 알고리즘 간의 결합도를 낮춥니다. 클라이언트는..

Architecture 2023.05.16

AWS EKS 클러스터에 접속해서 특정 작업 또는 정보를 확인하기

글을 작성하게 된 계기 회사에서 개발 도중에 stage 환경에 띄워져있는 특정 pod이 5분간격으로 터졌다. dev에서는 잘 되는데 stage에서만 발생하는 문제였고, 문제가 발생하는 RPC도 로컬에서 연결해서 확인해봤을때는 정상적으로 동작했다. 인프라쪽에서 최근에 보안관련 설정을 했었는데 그때 뭔가 잘못 건드려서 발생하는 문제같았지만 확실하게 하고싶어서 옆자리 사수님께도 얘기해 봤다. 이때 사수가 "eks 에 접속해서 확인해봐야 정확히 알 것 같아요!" 라고 하셨지만 나는 어떻게 해야하는지 구체적으로 몰랐다. 결국 실장님이 인프라담당자에게 관련 이슈에 대해서 전달하고, 내게 eks 접속과 관련해서 커맨드를 알려주고 설명을 쭉 해주셨다. 쿠버네티스에 대해서 강의를 들은 적은 있지만 대충 억지로 공부했어서..

개발 이슈 2023.05.13

Bastion 서버란 무엇인가

올해초에 인프라 전환을 하기 전에 서비스를 배포할 때 Bastion서버라는 곳에 접속한 다음에 여러 커맨드를 입력하고 배포를 했었다. 당시의 서비스 배포 과정은 다음과 같았다. $ ssh -i ~/.ssh/id_rsa deploy@3.xxx.xxx.xxx -A $ conn api1 $ git pull $ yarn build $ pm2 restart 0 대충 이렇게 하면 서비스 배포가 된다는 것은 알고 있었는데 어떤 과정인지 잘 몰랐어서 늦게나마 찾아보고 정리했다. 명령어에 대한 설명은 다음과 같다. $ ssh -i ~/.ssh/id_rsa deploy@3.xxx.xxx.xxx -A 외부에서 deploy라는 사용자로 3.xxx.xxx.xxx라는 IP주소를 가진 서버에 접속한다. 이때 ~/.ssh/id_rs..

DevOps 2023.05.13

Jenkins 개념 및 용어 정리

Jenkins란? Jenkins는 지속적인 통합(Continuous Integration, CI) 및 지속적인 전달(Continuous Delivery, CD)를 지원하는 오픈 소스 자동화 도구입니다. 소프트웨어 개발에서 CI/CD는 개발자들이 애플리케이션의 변경 사항을 빠르게 통합하고, 테스트 및 배포를 자동화하여 품질을 유지하고 소프트웨어를 신속하게 제공하는 데 도움을 줍니다. Jenkins는 다양한 개발 언어와 프레임워크를 지원하며, 유연하고 확장 가능한 플러그인 아키텍처를 갖추고 있어 다양한 개발 환경에 맞춰 사용자 정의 파이프라인을 구성할 수 있습니다. Jenkins를 사용하면 소스 코드의 변경 사항을 감지하고, 빌드, 테스트, 정적 코드 분석, 패키징, 배포 등의 작업을 자동화할 수 있습니다...

DevOps 2023.05.13

싱글톤 패턴 (Singleton Pattern)

싱글톤 패턴 (Singleton Pattern) 싱글톤 패턴은 객체 지향 프로그래밍에서 많이 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 클래스의 인스턴스가 오직 하나만 생성되도록 보장하며, 이 인스턴스에 대한 전역적인 접근이 필요할 때 사용됩니다. 즉, 전역에서 유일한 객체를 생성하고, 이후에는 생성된 객체를 공유하여 사용하는 패턴입니다. 특징 클래스 내부에서 유일한 인스턴스를 생성합니다. 유일한 인스턴스를 참조할 수 있는 전역 변수를 제공합니다. 외부에서 인스턴스를 생성할 수 없도록 생성자를 private으로 선언합니다. 유일한 인스턴스를 반환하는 정적 메소드를 제공합니다. 구현 방법 싱글톤 패턴을 구현하는 방법은 다양하지만, 가장 간단한 방법은 클래스의 생성자를 private으로 선언하고, 정적..

Architecture 2023.05.10

The project you were looking for could not be found or you don't have permission to view it. 에러

remote: remote: ======================================================================== remote: remote: The project you were looking for could not be found or you don't have permission to view it. remote: remote: ======================================================================== remote: fatal: Could not read from remote repository. Please make sure you have the correct access rights and t..

개발 이슈 2023.05.08