project
-
MSA 의 장점과 단점project 2023. 7. 24. 08:53
MSA 로 분리하는지 또는 monolith 로 뭉치는지를 선택하기 위해 MSA 의 장단점을 이해해야 한다. 장점은 독립적인 개발, 디비 분리 등이 있다. 단점은 transaction 을 들 수 있다. RDBMS 하나로 dao 가 묶이던 시스템의 쿼리가 (데이터를 어디에 저장하냐에 따라 다를 수 있다) 분산되어 RDBMS 가 지원하는 transaction 을 쓸 수 없게 된다. 해결 방법으로는 분산 트랜잭션이 있는데, 이는 복잡도가 높아 유지보수성이 낮아진다. 두 개의 microservice 를 하나의 transaction 으로 묶어야 한다면 우선 뭉치는 것을 고민해야 한다. 이 자체가 쪼개야 할지를 판단하는 하나의 지표로, 이러한 유스케이스가 많다면 쪼개지 않는 것이 좋다. 이와 별개로 최종적 일관성은 ..
-
내부 인증 시스템 개발하기project 2023. 2. 20. 20:48
프로젝트는 MSA 구조여서 여러 프로젝트들이 존재한다. DB 도 도메인 별로 분리되어 있다. 이러한 상황에서 여러 프로젝트에서 로그인 기능이 필요한데, 어떤 프로젝트는 public open 이지만 어떤 프로젝트는 내부 시스템용이다. 로그인 기능이 반복적으로 나오고 따라서 이러한 관심사를 처리할 별도의 프로젝트가 필요하다. 작업 내용 : 작업기간이 길지 않고 내부 시스템만 사용할 시스템이다. 개발을 빠르게 하고 MSA 에서의 확장성을 위해 openapi, jwt 를 선택했다. 이렇게 했을 때 장점은 스프링 진영에서 지원하는 라이브러리로 설정 몇개만 해주면 작업이 끝난다는 점이다. spring-boot-starter-oauth2-resource-server 단점은 openapi 프로토콜과 동일하게 해야 하고..
-
Elasticsearch client 쓸때 주의점project 2022. 12. 1. 14:12
1. 응답 코드 예를 들어 Java client 로 index 명령어를 그냥 내리면 201이 반환된다. 엘라스틱서치 서버에 접수되었다는 뜻으로 다음 코드라인에서 다른 명령어를 내리면 앞에 명령어가 반영안된상태로 들어갈 수 있다. 역시 이런 경우엔 응답코드를 잘 읽어야 하는데, https://github.com/elastic/elasticsearch/blob/main/server/src/main/java/org/elasticsearch/rest/RestStatus.java GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine Free and Open, Distributed, RESTful Search Engine...
-
Maven 에 대해project 2022. 9. 21. 21:02
https://maven.apache.org/ Maven – Welcome to Apache Maven Welcome to Apache Maven Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. If you maven.apache.org 공식 문서가 잘 되어있다. Maven 은 dependency, plugin 등을 찾을 때 로컬 캐시 repository ..
-
cs 수업 과제 정리project 2022. 6. 17. 11:29
다시 보니까 뭔가 더 보인다. 다시 정리하도록 하자. 1. HTTP 패킷 sniffer Python pcapy 라이브러리로 HTTP 패킷을 sniff 한다. HTTP 패킷은 ethernet / IP / TCP 헤더 순으로 이어져 있는데, 하나의 HTTP 패킷은 여러 TCP 로 세그먼트 되어 전송된다. Ethernet 헤더에는 MAC 주소 등이 있고, IP 헤더에는 IP 주소 등이 있다. TCP 헤더에는 포트 넘버가 있고, IP 주소와 포트 넘버로 어디서 온 패킷인지 멀티플렉싱 할 수 있다. TCP 헤더에는 seq 넘버가 있고, 이를 통해 몇 번째 패킷인지 알 수 있어 순서를 맞추어 저장할 수 있다. 이를테면, 패킷 sniff 를 통해 동영상을 다운로드 받고자 한다. 하나의 동영상은 하나의 HTTP 메시지..
-
MGP 과제를 하며 느낀 점 - 테스트의 중요성project 2022. 6. 11. 16:51
먼저, 과제 내용은 CUDA 프로그래밍을 통해 VGG 네트워크 (DNN) 을 개발하는 것이었다. 과제를 하는 과정에서 느낀 점에 대해 적어보자. 분명 다른 개발 (Spring 등) 을 할 때도 도움이 될 것이다. 1. 관심사를 작게 나누고 그 부분을 완전하게 개발하는 것의 중요성 처음에는 통합 테스트 코드만이 주어졌다. 수십 개의 layer 가 이어진 구조에서, 처음부터 끝까지 통과하는 테스트 코드만으로 개발을 하려니까 막막하고 어려웠다. 각 부분을 테스트하는 코드를 만들고, 테스트에 성공하도록 코드를 짜는 방식으로 개발하였고, 작은 부분에만 집중해서 할 수 있어 훨씬 쉽게 개발할 수 있었다. 2. 테스트 코드의 효율성 - 더 빠르게 정확하게 개발할 수 있는 방법 하나의 메소드 (convolution) ..