전체 글57 비기능적 요구사항 - NFR(Nonfunctional requirement) 개발 환경에서 우리는 기능적 요구사항을 충족하기 위해 개발에 착수 하지만 개발 중, 혹은 이후에 확인되어야 할 사항들이 바로 비기능적 요구사항들이다. 비기능적 요구를 충족시키는 이유는 기능적 요구사항을 비즈니스 팀에서 제시해 주는것이 아닌 개발팀에서 해줘야 하는 뒤따르는 기능들이기 때문이다. 개발자 입장에서 보는 비 기능적 요구사항에는 크게 다음과 같은 항목들이 있다. 성능 - 해당 기능을 사용할 때 성능에 문제가 없어야 한다. 확장성 - 다중 인스턴스로 확장할 때, 충돌이 없거나 데이터 중복과 같은 문제가 없어야 한다. 보안 - 당연하게 CORS, XSS, CSRF, LOG visiblity, Hard coded credentials 와 같은 문제들을 배포 전에 없에야 한다. 유용성과 편리함 - 코드를.. 2024. 1. 9. 정렬 알고리즘 (Sorting Algorithms) 정리 정렬 알고리즘의 종류는 매우 많은데 어떤 정렬 방식을 선택하냐는 상황에 따라 다르다. 그렇지만 대부분 average time-complexity가 Nlog(N)인 정렬을 사용한다 그 이상으로 간다면 효율적이지 못한 알고리즘으로 판단한다. 참고로 worst/average time complexity가 O(N)인 정렬알고리즘은 없다 (TimSort는 Best-time complexity가 n이다). 주어진 숫자열들을 n번 읽으면서 최소한 한번 이상 서로 비교를 해야하기 때문에 N번 이상 무조건 넘어간다. 양자 컴퓨터 기법으로 가면 말이 달라질 수도 있지만 말이다. 참고로 Java 17의 Collection.sort 는 Dual-pivot qucik sort를 쓴다 밑에 예시의 Qucik sort는 pivot.. 2024. 1. 8. PSQL 반복적인 Update query 실행시 발생 하는 상황 - SQLSTATE(08006) 주문 제작 성능 테스트를 실행하다 발견한 문제점이다. 처음에는 한번에 100주문, 500 주문, 1000주문으로 주문량을 늘려가면서 로드 테스트를 해보다가 동시 4000주문으로 늘렸을 때 발생된 일이다. 비교적 불규칙적으로, 2000주문 쯤 되었을 때, 외부 서비스로 AMQ를 통해 주문 신청이 완료가 되고 주문보고서가 S3에 올라갔지만 마지막에 처리해야하는 PSQL의 주문 상태 업데이트가 종종 뻑이 나는데, 알고보니 중간에 상태를 변경하다 멈추는 현상이 발견된 것이다. 에러 코드는 다음과 같다 2023-12-29 13:03:28,626 [reactor-http-epoll-1] WARN pool.ProxyConnection {} - HikariPool-1 - Connection org.postgresql... 2024. 1. 6. 소프트웨어 디자인 패턴 - 빌더패턴 Builder Pattern (Creational Design Pattern - 2) 오늘은 소프트웨어 디자인 패턴에 있어 빌더 패턴 (Builder pattern) 을 다룰려고 한다. 빌더 패턴을 직접 구현하지 않았더라도 현업에서는 기본적으로 쓰고 있는 패턴이라고 믿는다. 자바 스프링에서는 @Builder 어노테이션으로 클라스에 붙이면 instantiation을 할 필요없이 바로 원하는 초기 속성 값들을 바로 넣을 수 있게 된다. 일반적인 클라스의 제작 예를 들어보면 일반적인 경우 우리는 클라스 변수들이 private 일때 보통 Constructor을 통해서나 setter 와 getter로 값을 설정하고 불러온다. import java.time.LocalDate; public class NonBuilder { private String name; //이름 private int age; .. 2024. 1. 5. 분산 컴퓨팅의 오류 (Fallacies of distrubuted computing) 팀 내에서 많은 몇분을 제외한 많은 개발자 분들이 장기 휴가를 떠났었다. 그리고 다들 돌아오고 나서 공백 기간동안 있던 일에 대해 인수인계를 받고 우리 팀과 같이 회의를 진행하게 되는데, 휴가 기간동안 올려진 코드 PR에 대해 설명하던중 PR을 철회해야 할 때 생긴 일이다. A 팀 리드: "그래도 연말 휴가 기간동안은 소프트웨어 배포 계획이 다 막혀서 해당 버그는 지금 적용되지 않았겠네요." B 팀 리드: "근데 뭔가 이상하네요 PR리스트에 보이지도 않고, 지금 테스팅 환경에서 돌아가는 것 같은데요?" A 팀 리드: "그럴리가 없는데... 저 2주동안 휴가라서 제가 승인을 안하면 코드가 배포될 일이 없을텐데요...?" 그러자 잠시 후 A 팀리드는 코드 PR이 확실히 승인 되고 Merge 된것을 확인 한 .. 2024. 1. 4. System Integration(SI) / System Management(SM) 경험 현재 본인은 SI관련 업무를 하고 있지만, SI개발이 완료되면 가끔 연장해서 SM 업무도 맡기도 하고, 과거에 몇몇 SM 관련 이슈로 문제점을 해결해 보기도 했다. 중요한건 SI와 SM의 업무 경험 차이인데 이 부분은 정말로 차이가 나뉘는 부분인 것 같다. SI 는 시스팀 구축 및 개발에 착수하게 되는데 1개월 정도 기능 회의와 시스템, DB설계를 다 고안하게 되면 개발에 착수한다. 물론, 얼마나 시스템이 복잡하느냐에 따라 계획된 설계가 수정되기도 하고 개발 기간이 늘어나긴 하지만 한번 개발이 착수되고 나면 요구되는 기능들을 시간안에 끝내 놓는게 주 목표이다. SI에서 개발이 완료되고 QA 팀에 의해서 어느정도 테스트가 끝나게 되면 배포 후 바로 계약이 끝나는 경우가 있긴 하지만 우리 팀의 경우는 규모가.. 2024. 1. 2. 이전 1 ··· 6 7 8 9 10 다음