본문 바로가기

전체 글42

concurrency in go(1) -------------------1장 동시성 소개-------------------- go 언어는 동시성과 관련된 부수적인 작업들을 추상화함으로써 프로그래머가 문제 해결에만 집중할 수 있도록 도와준다. 동시성이 어려운이유 레이스 컨디션: 프로그램의 순서가 보장되지않을때 발생한다. 가능성이 있다는것. 그것이 버그가 될 소지가 된다. 원자성: 동작하는 컨텍스트 내에서 나누어지거나 중단되지 않는다는 것을 의미한다. 컨텍스트(context)라는 현재 정의된 범주가 중요하다. 어떤연산을 원자적이라고 판단할 수 있는 범위를 컨텍스트라고 정의힌다. i++ i의 값 가져오기/ i증가시키기/ i 저장하기 원자적인것을 합친다고 더큰 원자성을 보장하는것은 아니고, 이경우 i를 다른 고루틴에게 노출하지 않는 고루틴의 컨텍스.. 2022. 12. 31.
k8s 교육 키워드 정리 0.container & docker resource의 격리 과거의 모노리틱한 구성일 경우, 2가지 서비스를 필요로 할시 2개의 서버를 만들게 된다. 그럼 서버를 2개를 사용하게되는데, 트래픽이 몰리는 시간과 아닌시간, 백업할 때 백업안할때, 등등의 이유로 전체 시간대비cpu resource 활용도가 매우 낮게된다. 하지만, 이런거 자체는 가상화 기술의 근본적이 이유이다. 물리적인 것을 논리적으로 바꾸는것 = emulation(4가지 cpu, memory, storage, network) virtual mechanie -> container로 변경된 이유는 resource overhead(vm을 구성하는데 있어서 hyperviser등을 구성하는데 resource가 들어간다) /// 성능 손실(i/o 등등.. 2022. 12. 17.
google go style guide 공부 요즘은 팀에서 협업 문화를 만들어가고 싶어서 이것저것 공부하고 있다. 그중 하나는 go의 style guide에 대해서 공부를 해야되겠다고 느꼈는데, effective go 말고도 구글에서 제공하는 스타일 가이드 문서가 있어서 잘 읽어보았다. 문서에는 3가지 style guide, style decision, best practice가 있는데, 일단 style guide문서부터 읽어보았다. 무엇보다 구글이 추구하는것은 읽기쉬운 코드라는걸을 새삼 느끼고간다. 왜 이코드를 사용했는지 주석을 달라는 부분도 그러한 부분을 느끼게되는 인상깊은 부분중 하나였다. 5 principle to code golang style의 5가지 원칙 1. clarity - 명확하게 전달 2. simplicity - 간단해야 된다... 2022. 12. 12.
golang 팀내 테스트 코드 작성 테스트 코드를 쓰는것에 요즘 더욱 더 필요성을 느끼고 있다. 하나의 수정을 할때마다, 시스템에 영향도가 머리로는 그려지지만, 설마 내가 생각하지 못한 곳에서 영향을 미치는지, 모든기능이 정상적으로 작동하는지 의문이 생길때가 있고, 그럴때마다, 수동으로 동작들을 테스트하거나 하는일은 생각보다 더 많은 시간들이 쓰이게된다. 처음에는 테스트를 하는 시간이, 코드를 작성하는시간보다 짧았으며, 테스트를 작성하는것 또한 많은 시간을 들이게 되어서 등한시한게 있지만, 막상 시스템이 안정기로 넘어가다보니, 오히려 코드를 수정하는 양보다 테스트를 하는시간이 더욱 오래걸리게되고, 개인 resource도 많이 사용되고있다는것을 느끼고 있다. 그래서 코드에 대한 테스트를 자동화해야겠다는 생각이 들었고, 그래서 테스트관련 책을.. 2022. 11. 20.