목록Study/DEVELOP (6)
DevYGwan
MSP(Managed Service Provider)나 SaaS 플랫폼을 운영할 때, 여러 고객의 온프레미스 또는 클라우드 인프라를 관리해야 하는 경우가 많습니다. 특히 각 고객이 독립적으로 구축한 Kubernetes 클러스터를 중앙에서 관리하려면 원격 접근이 필수적입니다. (물론 원격 접근이 불가능 한 고객들도 있습니다.) 저희는 3대의 서버와 이를 연결하는 라우터를 1세트로 구성해 온프레미스 환경을 구축합니다. 이후 Kubernetes 클러스터에 원격으로 안정적으로 접근하기 위해 라우터에 Tailscale을 설치하고, 라우터가 연결된 내부 IP 대역을 광고(advertise)하는 Tailscale subnet router로 설정합니다. 이를 통해 운영자는 Tailscale을 통해 각 노드와 Kuber..
저희는 실시간 공장 기기들의 데이터를 취급하고 있습니다. 데이터는 1초, 10초 등 특정 주기로 한번씩 올라옵니다. 기기 한개를 기준으로 1초에 한번씩 데이터들이 올라온다고 가정하면, 하루동안 24시간 × 60분 × 60초 = 86,400 개의 데이터가 올라옵니다. 물론 사용자는 기기 한개가 아니라 기기 여러개를 관리하고 있을 것이고, 1초, 5초, 10초 등등 특정 주기로 올라오는 데이터가 많아지면 이 데이터는 기하급수적으로 늘어날 것입니다. 저희는 이러한 대용량 데이터를 관리하고 있는데, 이번에 구현해야 할 기능은 특정 범위에 해당하는 데이터를 추출하는 기능입니다. 추출은 csv로 추출합니다. 원래는 csv을 추출할 때, csv을 생성하는 라이브러리(OpenCSV 등)을 써서 단순히 데이터를 조회하고..
회사에서 flyway을 도입하려 했는데 저희가 사용하는 DB가 flyway를 지원하지 않는 문제를 발견했습니다. 해당 공식 Repository에서 지원하는 DB 목록을 볼 수 있습니다. (https://github.com/flyway/flyway) 따라서 이 문제를 해결하기 위해 flyway 지원 코드를 작성했고 테스트를 완료했습니다. 이에 대한 설명은 다음 장에서 설명드리도록 하겠습니다. 그렇게 해서 flyway 지원을 성공적으로 했고, 공식 레포에 문의하여 PR을 통해 지원할 수 있게끔 요청을 남겼습니다. 하지만 문제가 PR이 언제 될지 모르고, 응답도 빨리 오지 않아 당장 사용하기가 힘들었습니다. 그래서 이 문제를 해결하기 위해 "우리가 작성한 코드를 라이브러리로 배포해보자" 라는 생각이 들었습니..
이번 주제는 github actions로 CICD를 적용하는 과정에서 발생한 문제를 공유하려고 합니다. 저는 서버를 배포하기 위해 AWS EC2 인스턴스를 사용해서 배포를 진행했습니다. CICD를 적용하는 방식에는 여러가지 방식이 있는데, 저는 SSH 방식으로 서버 내에서 빌드 & 배포를 진행하는 방식을 사용했습니다. 간단하게 SSH란, SSH는 Secure Shell의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜입니다. 배포를 진행하면서 배포에는 필요하지만 외부에 공개되면 안되는 값들은 변수로 설정해 다른사람에게는 공개가 안될 수 있도록 처리해야 합니다. 제가 생각하기에 이러한 값들은 크게 2가지로 나눌 수 있다고 생각합니다.github actions가 CICD 동작 시에 기본적으로..
개발을 진행하다보면 팀 프로젝트를 하는 경우가 많다. 이때 혼자할때와는 다르게 팀원들간의 코딩 스타일을 맞추는 작업이 사전에 필요하다. 코딩 스타일이란 코드를 작성하는 방식에 대한 개인적인 기호를 뜻한다. 물론 코딩 스타일에 정답은 없지만, 이러한 스타일을 사전에 맞추는 것이 안정적으로 코딩하는데에 있어서 아주 중요하다. 저는 여러가지 코딩 스타일중 이번 장에서는 Case style(Naming Convention)에 대하여 다뤄볼 예정이다. Case Style ( 케이스 스타일) 이란? 케이스 스타일이란 코딩 스타일 중 일부로써 작명 규칙을 의미한다. 변수, 메서드, 클래스 등의 식별자의 작명 스타일을 의미한다. 대부분 언어마다 정해진 케이스 스타일이 존재한다. 대표적인 표기법으로는 다음의 5가지가 있..