github 이해하기-1

Github에서 Commit 이란? 우리가 사용하는 Github-Repository에서 어떤 변경 사항을 만들었을 때 이것을 추가하는 것을 add라고 한다면, 이렇게 add된 부분을 하나의 버전으로 만드는 것을 commit 이라고 합니다. Github과 SVN의 차이 10년 전만 해도 개발 전반의 소스 버전 관리는 SVN(SubVersion)을 이용 했었을 것입니다. 하지만, Github이 나오고 요즘의 대부분 오프소스나 사내의 소스 버전 관리는 SVN을 잘 사용하지 않게 되었습니다. 이 두 버전 관리 […]

[python] 패키지 관리를 위한 poetry(가상환경까지)

poetry소개 poetry는 python 개발시 패키지의 의존성을 관리하는 라이브러리 이며, 자바의 maven이나 gradle 비슷한 툴이라고 볼 수 있씁니다. 또한 virtualenv와 같이 가상환경 설정을 지원하여, 보다 포괄적인 의미의 기능도 있으며, build/publish 같은 배포까지도 가능한 범용적인 tool로도 사용할 수 있습니다. (본 문서는 poetry를 이용한 기본 설치 및 사용법과 실제 chatops를 개발 하기 위해 적용한 사례의 예시 기반으로 작성 되었습니다.) 설치 Linux 에서 설치(ubuntu […]

[python]Virtualenv를 이용한 개발환경 분리 및 패키지 관리

Virtualenv란? Virtualenv는 하나의 서버 인스턴스에서 여러개의 파이썬 버전별 혹은 여러개의 프로젝트 별 종속성 문제를 해결하기 위해 설치하는 일종의 python 가상환경이며, 주로 아래의 케이스에서 많이 유용합니다. 개발 서버에서 설치된 python verion과 별도의 project를 진행  동시에 여러 Python 프로젝트를 진행하는 경우 각 버전의 차이가 있는 경우  오래된 Python Project에서 Python 버전은 유지하면 기능을 업그레이드하는 경우 상용 클라우드 (AWS, MS Azure, Google Cloud) […]

Redis 서버 구축은 이렇게

인메모리 DB의 필요성 성능 개선을 위한 방법 중 하나로 인메모리 DB를 많이 사용합니다. 전체 서비스 흐름에서 데이터 입출력이 차지하는 비중을 생각해보면, 인메모리 DB의 필요성은 더욱 커질 수밖에 없습니다. 인메모리 DB는 데이터를 디스크 대신 메모리에 저장함으로써 I/O 성능을 수십 배에서 수백 배까지 끌어올립니다. 다만 메모리 특성상 데이터의 영구성이 보장되지 않기 때문에 필요에 따라 적절한 백업 시스템을 구축해야 합니다. 인메모리 DB 서버를 […]

CI/CD 솔루션 with Github Action & AWS CodeDeploy

1. 개요 1) 목적 개발과 운영을 결합한 형태인 데브옵스라는 문화가 IT 업계의 트렌드로 자리잡은지는 오래되었지만 여전히 많은 조직에서는 개발과 운영이 분리되어 있습니다. 작은 기업의 경우 실제 서비스와 관련된 애플리케이션 개발에 투자를 집중하다 보니 상대적으로 운영은 개발 이후의 부속 작업으로 여겨지는 경우가 많습니다.  상황이 이렇다 보니 개발자들은 인프라에 대한 이해가 부족한 상태에서 애플리케이션을 배포하게 됩니다. 개발 환경과 운영 환경의 차이, 트래픽 […]

우리 조직의 DevSecOps 성숙도 수준은?

이번 글은 Datadog의 DevSecOps Maturity Model을 번역/편집하여 작성했습니다. Datadog은 SaaS 기반 데이터 분석 플랫폼을 통해 모니터링을 제공하는 데이터 관찰 서비스 기업으로, 10년 이상 14,000여 개사의 DevOps(지금은 DevSecOps) 전환을 지원하며 얻은 인사이트를 활용하여 어느 조직이든 쉽게 따라갈 수 있는 과정으로 구성된 DevSecOps 성숙도 모델을 구축했습니다. 참고자료: Datadog의 DevSecOps Maturity Model DevOps에서 DevSecOps로 개발과 운영이 하나의 팀으로 묶여 운영되는 DevOps 문화가 정착되면서 […]

[python] Expiring Dict를 이용한 “in memory caching”

ExpiringDict 패키지는? ExpiringDict는 Python caching library 중에 하나이며 굉장히 심플하게 사용할 수 있고 https://github.com/mailgun/expiringdict에 그소스 전체가 공개 되어 있습니다. 또한 python의 OrderedDict class를 상속 받아 구현되어 있으며 get/set 메소드 동작시 설정된 TTL(time-to-live) 기준으로 데이터를 자동 삭제 합니다. 또한 저장되어지는 객체는 get/set/contain 메소드 내부의 lock 메카니즘이 작동하여 thread safe한 구조로 만들어져 있습니다. 설치 pip를 이용해서 다음과 같이 설치 합니다. 또한 깃헙을 […]