1. 헥사고날 아키텍처(Hexagonal Architecture) 포트와 어댑터 아키텍처(Ports and Adapters Architecture)라고도 하며, 앨리스터 코오번 (Alistair Cockburn)이 개발했다 infrastructure(외부세계)로 부터 도메인 모델(비즈니스 로직)을 분리하기 위한 패턴이다. 그럼 domain과 infrastructure이 각각 뭘까? 도메인(domain)은 어플리케이션이 존재하는 이유이다. app의 본질이고, 차별성을 만드는 부분이다. 이 domain은 비즈니스 로직을 포함하고 있으며 데이터베이스나 web API나 프레임워크와 같은 기술로 부터 분리되어져야 한다. 인프라(infrastructure)는 기술을 나타낸다. 비즈니스 도메인이 아닌 나머지 모든 것..
1. Spring MVC - Thread per request model로 구현되어 있다. - 보통 tomcat 서버는 디폴트로 200개의 thread를 가진 thread pool을 지원한다. 분산시스템에서 API 서버가 아닌, 다른 API 서버의 REST API를 호출해 데이터를 통합하는 경우가 매우 흔한데, Blocking I/O 방식으로 동작하기 때문에 시스템 부하가 높다면 context switching과 thread data loading으로 인해 overhead가 발생한다. 얼마 안되는 코어(많아봤자 8코어)에 200개의 thread가 존재하기 때문에 thread끼리의 경합이 일어나 큰 부하로 이어진다. - 리소스가 부족한 서버에서 처리할 수 있는 동시 처리량은 매우 제한적이다 (thread ..
1. 동기화란 [예]하나의 객체를 두개의 Thread가 접근할 때 생기는 일 귤 두박스가 있을때, 한 박스당 하나의 스레드가 담당하도록 설정하고 상한 귤을 골라 개수를 계산한다고 할때, badCounter는 두 박스가 공유함. heap 메모리 안에 badCounter 객체가 있고, cpu는 single core일때, Thread1과 Thread2에는 context switching이 일어나면서 실행이 될 것이다. t1이 담당하는 박스에 상한 귤이 2개이고, t2가 담당하는 박스에 상한 귤이 5면 state값이 7개 여야하는데, 그게 보장이 안될 수 있다. increment 메서드 안에 state++ 코드가 cpu레벨에서 어떻게 실행되는지가 중요하다. 프로그래밍언어를 cpu가 이해할 수 있는 명령어로 변환..
깃헙 레포지토리 이름은 소문자, 그리고 - (dash)의 조합으로 생성한다. stackoverflow에 따르면 다음과 같다 1. 소문자 이용해라 2. 대쉬 써라 3. 명확하게 작성해라. (service, rest-service 대신 purchase-rest-service 같이 명확하게) 4. 일관되게 작성해라. https://stackoverflow.com/questions/11947587/is-there-a-naming-convention-for-git-repositories Is there a naming convention for git repositories? For example, I have a RESTful service called Purchase Service. Should I name ..
- Total
- Today
- Yesterday