개발상식

· 개발상식
Part 1. 용어 정리 OSS OpenSource Software, 오픈소스 소프트웨어의 약자 본 글에서 오픈소스 프로젝트 같은 의미로 사용할 예정이다. Apache Pulsar Kafka 와 같은 클라우드 네이티브 메시징 시스템 및 플랫폼 Yahoo에서 처음 시작되었고 이후 Apache 재단에 인큐베이팅, 그리고 메인으로 졸업 Jackson ObjectMapper 로 많이 알려져있는 프로젝트 ObjectMapper 는 Jackson 팀이 관리하는 jackson-databind 라는 프로젝트의 API 정확한 명칭은 FasterXML 이라는 팀이 있고 이 팀의 멤버들이 jackson-databind, jackson-module-kotlin 등의 라이브러리들을 관리한다. Part 2. 서론 최근 내가 메인..
· 개발상식
1. 개요 버그는 질병과 마찬가지로 다음과 같은 특징들을 가집니다. 불가피 함 : 버그와 질병 모두 최선을 다해 관리하지만 발생은 불가피합니다. 예방이 최선의 치료 : 가능하다면 예방이 발생 후 치료비용보다 저렴합니다. ***소프트웨어에 해당합니다. 소프트웨어는 항상 변경되기 때문에 버그 발생은 불가피한 현상입니다. 버그로 인해 발생하는 피해는 상당한 비용이 수반되어 예방과 관리를 모두에 적절한 자원을 분배하는 것이 중요합니다. 본 글에서는 소프트웨어 버그 예방과 관리에 자원을 분배하기 전, 버그 발생의 비용을 구성하는 여러 요소들을 나열해보고자 합니다. 일부 누락된 부분이 있거나, 잘못된 항목에 포함된 부분들은 말씀주시면 수정해보겠습니다. 2. 버그 발생으로 인한 손해 비용 구성 버그로 인한 총 손해 ..
· 개발상식
시작하며: 소프트웨어를 개발하는 우리는 종종 “빨리가는 것”과 “품질”을 정반대의 개념이라고 생각하는 경향이 있습니다. 빨리간다는 것은 속도의 정도(Amount)를 가지고 품질이라는 것 또한 품질의 정도(Amount)를 가지고 있는데 말이지요. 우리는 "빨리가면 품질을 희생해야"하고 "품질을 희생해야 빨리가는 것"이라 너무 쉽게 단정짓고 다음 과제에 뛰어듭니다. 모든 팀은 목적을 달성하기 위해서 노력을 하고 최선을 다해 움직입니다. 하지만 일부는 더 많이 노력할 수록 느려지고, 일부는 더 많이 노력할 수록 빨라집니다. 물론 노력과 지속함은 중요합니다만 단순히 이 두 가지가 팀의 속력을 결정하지 않습니다. 소프트웨어의 품질하면 "클린코드"라는 개념이 떠오릅니다. 클린코드는 단순히 좋은 관례, 좋은 가치 이..
· 개발상식
0. 목표 Java의 ArrayDeque와 Stack을 비교 분석한다. 이후 우리는 필요한 경우 ArrayDeque를 활용해 더 빠르고 메모리 효율성이 더 높일 수 있게된다. 1. ArrayDeque과 Stack 성능 및 메모리 효율 비교 1.a 기본적인 자료 구조와 API 디자인 ArrayDeque과 Stack은 모두 원소들의 집합을 저장하고 관리하는 데 배열(array)을 사용합니다. 그러나 두 클래스 사이에는 중요한 차이점이 있습니다. Stack은 스택의 맨 위에서만 원소를 추가/제거할 수 있는 설계를 가지고 있습니다. 반면에 ArrayDeque는 Deque 인터페이스를 구현하기 떄문에 양쪽 끝에서 원소를 추가하거나 제거할 수 있습니다. 이러한 추상자료구조 ADT(Abstract Data Type)..
· 개발상식
> 서론 최근 “테스트의 사실과 오해”라는 주제로 사내 컨퍼런스에서 발표하는 기회가 있었습니다. 컨퍼런스 참여 후기는 이전 스토리👈🏻링크클릭🔗에 남겨두었습니다. 제 발표 들어주신 분들의 긍정적인 피드백에 용기를 얻어서 실제 발표 내용도 공유해봅니다. 내용은 Community Edition 으로 서비스 특정 내용들은 변경하고 필터 처리했습니다. ✌ ️ > 목차 ► 소프트웨어의 테스트란? ► 내가 경험한 테스트의 사실과 오해 -▷ 1 오해 : 우리는 인력/시간이 부족해서 테스트를 작성하지 못한다 -▷ 1 사실 : 우리는 인력/시간이 부족하기 때문에 테스트를 활용해야 한다 -▷ 2 오해 : 테스트는 빌드시점에만 동작해야한다 -▷ 2 사실 : 테스트는 제품의 생명주기 전반에 걸쳐 적용 가능하다 -▷ 3 오해 :..
· 개발상식
개발하면서 이정도는 알고가볼까? 기초 지식을 학습하며 기록용으로 사용하고 있어서 구조가 난잡할 수도 있습니다. 네트워크 www.naver.com을 입력하면 무슨일이 발생하는가? 1. https://www.naver.com 해당 도메인네임의 IP 주소를 찾는다 1. 브라우저에 www.naver.com 으로 IP 주소 저장되어있는지 확인한다. 2. 없으면 OS 에서 확인한다. 3. 없으면 DNS로 질의한다. 4. 이렇게 IP 주소를 찾아서 2. 프로토콜, IP 주소, 포트 번호(기본 80) 으로 분해해서 HttpRequest를 만든다. 3. 직렬화하고 4. HTTP > TCP > IP > 거쳐 그 하위 레이어 까지 본인들이 필요한 정보를 붙이고 5. 전송한다. 6. LAN 어댑터를 거쳐서 허브/스위치를 통해..
· 개발상식
시작하며 현재 진행중인 프로젝트에서 웹소켓을 활용한 기능 구현을 검토중입니다. 웹소켓을 적용하기 전에 알아봐야할 것들, 고민할 것들을 아래 질문 형태로 기록해둡니다. 웹소켓이란? 웹소켓이 해결하려는 문제는 Real-Time Collaboration on Web (웹기반 실시간 커뮤니케이션)이다. 대표적으로 Trello, Google Docs 와 같은 서비스들이 있다. 웹소켓의 주요 특징 Statefulness Low Latency 2 Way Push (Bi-Directional) 브라우저/서버간 통신 Standard(규약)이 필요하다. 1개의 TCP 커넥션을 사용한다. (1 WebSocket per 1 TCP Socket Connection) Message-based 웹소켓의 Phases Opening ..