IT이론(8)
-
IT - DevOps란?
DevOps에 대해 조금더 자세히 알고 싶어 여기저기 서칭하던 중, 조대협님의 좋은 글이 있어 공유하려 한다. 기존에 DevOps가 무엇이냐 물어보면 막상 딱 대답할 수 없는 나였지만 이 글을 통해 DevOps가 뭔지 조금 알아볼 수 있었던 계기가 되었다. Devops의 정의 이러한 개념들을 적극적으로 적용한 기업들이 Netflix, Flicker와 같은 인터넷 서비스 기업이다. 기존 개발 프로세스에 비해서 훨씬 빠르게 고객의 요구 사항을 반영해 내가고 있다. Flicker의 경우에는 하루에 10번 정도 [1]Deploy를 한다고 한다. 일반적인 인터넷 서비스가 한달에 한번 업데이트 빨라야 일주에 한번인데, 하루에 10번이라면, 경쟁 구조 자체가 틀려진다. PuppetLab (Configuration m..
2019.12.07 -
CQRS(Command and Query Responsibility Segregation) 명령-질의 책임분리란?
CQRS는 Command and Query Responsibility Segregation(명령과 조회의 책임 분리)을 나타냅니다. 이름처럼 시스템에서 명령을 처리하는 책임과 조회를 처리하는 책임을 분리하는 것이 CQRS의 핵심입니다. 이제 명령과 조회에 대해 정의할 필요가 있습니다. CQRS에서 명령은 시스템의 상태를 변경하는 작업을 의미하며 조회는 시스템의 상태를 반환하는 작업을 의미합니다. 정리하면, CQRS는 시스템의 상태를 변경하는 작업과 시스템의 상태를 반환하는 작업의 책임을 분리하는 것입니다. 모든 연산이 명령과 조회로 쉽게 양분되지 않는다. 개념적으로 어려운 경우도 있고 동시성 등 기술적인 문제도 있다. Martin Fowler는 스택 자료구조의 pop() 연산을 예로 들었다. 너무 단순하..
2019.09.09 -
리팩토링 - 디메테르의 법칙(The Law of Demeter),최소 지식 원칙
디메테르의 법칙은 객체 지향 디자인 원칙 중 하나이다. "최소 지식 원칙" 말 그대로 결합도가 낮은 설계를 위한 어떠한 원칙이다. 만약 메소드에 강한 결합도를 가진 로직이 들어가있다면 하나를 수정하면 많은 곳에서의 수정이 일어나는 대참사가 일어날 것이다. 그 중 디메테르의 법칙은 메소드 내의 다른 객체(API등)의 호출에 관련된 원칙이다. 간단히 글로써 정의를 보자. 디메테르의 법칙에서는 어떠한 객체 A의 메소드 m은 다음과 같은 종류의 객체에 있는 메소드들만 실행시킬 수 있다. A, 자기자신의 메소드 m의 매개변수로 들어온 객체의 메소드 m, 안에서 초기화된 객체(new 연산자) A의 인스턴스 변수(컴포넌트 객체) m의 스코프 안에서 O가 접근 가능한 전역변수 위의 내용을 조금 더 쉽게 설명하면, 클래..
2019.09.08 -
성능 분석 및 튜닝이란?(performance tuning)
오늘 포스팅할 내용은 애플리케이션 성능 분석 및 튜닝관련된 포스팅이다. 정말 고마우신 분들이 많은 조언과 평가를 해주셨고 그 중에 가장 기억에 남는 성능관련 이야기를 찾아서 공부하던 중 조대협님 블로그에 정말 처음 읽기에 좋고 혹은 정말 고민하는 부분이었던 사람들도 읽기 좋았던 성능관련 글이 있어서 공유한다. 성능 엔지니어링 대한 접근 방법 (Performance tuning) 성능 엔지니어링에 대한 접근 방법 조대협 성능 개선, Performance Tuning, 용량 선정 과 같은 튜닝 관련 용어들은 모든 개발자나 엔지니어에게 모두 흥미가 가는 주제일 것이다. 그 만큼 소프트웨어에서 고성능을.. bcho.tistory.com 성능 개선, Performance Tuning, 용량 선정 과 같은 튜닝 관..
2019.07.16 -
The Twelve-Factor App
최근 소프트웨어를 서비스 형태로 제공하는게 일반화 되면서, 웹앱 혹은 SaaS(Software As A Service)라고 부르게 되었다. Twelve-Factor app은 아래 특징을 가진 SaaS 앱을 만들기 위한 방법론이다. 설정 자동화를 위한 절차를 체계화하여 새로운 개발자가 프로젝트에 참여하는데 드는 시간과 비용을 최소화한다. OS에 따라 달라지는 부분을 명확히하고, 실행 환경 사이의 이식성을 극대화한다.(OS에 종속되지 않는 애플리케이션) 클라우드 플랫폼에 적합하고, 서버와 시스템의 관리가 필요없게 된다. 개발 환경과 운영 환경의 차이를 최소화하고 민첩성을 극대화하기 위해 지속적인 배포가 가능하다. 툴, 아키텍쳐, 개발방식을 크게 바꾸지 않고 확장(scale up)할 수 있다. Twelve-F..
2019.04.03 -
재귀호출(재귀함수)
재귀란? static void dfsForRecursive(int v,String str) {if(count==6) {sb.append(str+"\n");}else {for(int i=v+1;i
2018.03.09