전체 글184 [Docker & Kubernetes 실전 가이드] 1과 시작하기 정의 도커는 무슨 문제 상황에서 도입해서 활용할 수 있을까? 도커는 컨테이너를 생성하고 관리하는 도구 컨테이너란 “표준화된 소프트웨어 유닛”이다. 컨테이너에 동일한 버전을 사용하는 종속성이 설치됐을 때, 항상 동일한 동작과 결과를 보장한다. 컨터이너 안에 “소프트웨어 유닛, 코드가 포함된 패키지 및 코드를 실행하는 종속성을 보관한다” 컨테이너를 왜 쓸까? (독립적인 표준화된 애플리케이션 패키지를 원하는 이유는?) 원격시스템의 종속성과 로컬/개발시스템의 종속성(버젼)이 다를때, 실행이 되지 않기 때문. 우리가 제품 생산에서 가지고 있는 것과 똑같은 개발 환경을 가짐으로써, 로컬/개발 환경에서의 테스트 결과를 신뢰할 수 있음. 팀이나 회사 내의 각각 개발 환경이 서로 다를 때. 프로젝트 간 서로 다른 버젼을.. CS/기타 2024. 1. 18. [소프트웨어 아키텍처 101] 챕터 5. 아키텍처 특성 식별 챕터 5. 아키텍처 특성 식별 아키텍처를 구축하거나 기존 아키텍처의 타당성을 검증할 때 제일 먼저 해야 할 일은 아키텍처 특성을 식별하는 것이다. 주어진 문제 영역이나 애플리케이션에서 아키텍처 특성을 정확하게 식별하기 위해 아키텍트는 해당 도메인을 잘 이해하고 있어야 하며, 도메인 이해관계자들과 협력하여 도메인 관점에서 정말 중요한 것들을 결정해야 한다. 아키텍트는 적어도 도메인 관심사, 요구사항, 암묵적 도메인 지식, 이렇게 세 가지 출처에서 아키텍처 특성을 밝혀낸다. (내 생각) 향후 추후 유입이 많을 것이라 예상되는 신규 서비스 개발을 한다면 아키텍트로서 확장성, 성능, 내고장성 등을 가장 중요한 특성으로 뽑아볼 수 있을 것 같다. 혹은 트랜잭션의 정합성을 완벽하게 보장해야 하는 결제 등의 도메인에.. CS/기타 2024. 1. 17. [소프트웨어 아키텍처 101] 챕터 4. 아키텍처 특성 정의 챕터 4. 아키텍처 특성 정의 아키텍트는 개발팀과 함께 도메인 또는 비지니스 요구사항을 정의할 수 있지만, 주로 소프트웨어로 처리할 일 중 도메인 기능과 직접적인 관련이 없는 모든 것들, 즉 아키텍처 특성(architectural characteristic)을 정의, 발견, 분석하는 일을 수행한다. 아키텍처 특성은 다음 세 가지 기준을 충족한다. 비도메인 설계 고려 사항을 명시한다. 설계의 구조적 측면에 영향을 미친다. 애플리케이션 성공에 중요하다. 비도메인 설계 고려 사항을 명시한다 애플리케이션 설계 시 애플리케이션으로 처리할 일은 구체적인 요구사항으로 정리한다. 아키텍처 특성은 이 요구사항을 구현하는 방법, 어떤 선택을 하게 된 이유와 관련된 운영/설계 기준을 명시한다. 예를 들어, 애플리케이션 성능.. CS/기타 2024. 1. 17. [소프트웨어 아키텍처 101] 챕터 3. 모듈성 모듈성 모듈성은 사실 제대로 정의하기가 쉽지 않은 개념이다. 우리가 아키텍처를 분석해야 할 (메트릭, 피트니스 함수, 시각화 등) 많은 도구가 바로 이 모듈성에 기반하기 때문이다. 모듈성은 일종의 구성 원리이다. 모듈성을 잘 유지하는 건 우리가 암묵적 아키텍처 특성이라고 정의한 것의 좋은 예가 됩니다. 즉, 아키텍처를 논하기에 앞서 모듈성을 잘 유지하도록 프로젝트 구조를 잡아 나가야 한다. 정의 모듈성은 일종의 구성 원리(organizing principle)이다. 물리학에 비유하자면, 소프트웨어 시스템은 엔트로피(무질서)가 증가하는 방향으로 움직이는 복잡한 시스템을 모델링한다. 아키텍트는 끊임 없이 에너지를 소비해서 시스템을 구조적으로 탄탄하게 유지해야 한다. 모듈성을 잘 유지하는 건 우리가 암묵적(i.. CS/기타 2024. 1. 17. [소프트웨어 아키텍처 101] 챕터 2. 아키텍처 사고 아키텍처 사고 아키텍트는 개발자와 사뭇 다른 관점에서 주변을 바라본다. 기상학자와 아티스트가 구름을 바라보는 관점이 다른 것과 같은 이치이다. 이것을 **아키텍처 사고(architectural thinking)**라고 한다. 그러나 안타깝게도 아키텍처 사고를 그냥 아키텍처를 생각하는 것정도로 단순하게 여기는 아키텍트가 참으로 많다. 아키텍트의 사고 방식은 크게 네 가지로 나뉜다. 아키텍처와 설계의 차이를 이해하고 아키텍처 작업을 진행하려면 개발팀과 어떻게 협력해야 할지 아는 것 어느 정도 기술 깊이를 유지하면서 폭넓은 기술 지식을 확보하는 것 다양한 솔루션과 기술 간의 트레이드오프를 이해하고, 분석하고, 조율하는 것 비지니스 동인(business driver)의 중요성을 이해하고 그것을 아키텍처 관심사로.. CS/기타 2024. 1. 12. [소프트웨어 아키텍처 101] 챕터 1. 서론 1.1 소프트웨어 아키텍처란? 소프트웨어 아키텍처는 아키텍처 특성, 아키텍처 결정, 설계 원칙, 시스템의 구조로 구성된다. 시스템의 구조란 시스템이 구현된 (마이크로서비스, 레이어드, 마이크로커널 같은) 아키텍처 스타일들의 종류를 말한다. 시스템의 아키텍처를 완전히 이해하려면 아키텍처 특성, 아키텍처 결정, 설계 원칙도 알아야 한다. 아키텍처 특성은 소프트웨어 아키텍처를 다른 관점에서 바라본 것으로, 일반적으로 시스템의 기능과 직교하는 시스팀템의 성공 기준을 결정한다. 아래와 같은 특성이 시스템 기능에 관한 지식을 필요로 하는 것은 아니지만, 시스템이 올바르게 동작하기 위해서는 반드시 필요하다. 가용성 신뢰성 시험성 확장성 보안 민첩성 내고장성 탄력성 복구성 성능 배포성 학습성 아키텍처 결정은 시스템 구.. CS/기타 2024. 1. 12. 2023년 회고록, "나에게 맞는 옷을 찾은 해" 올 한 해, 제가 생각으로만 가지고 있었던, 해보고 싶었던 것들을 조금씩 해봤던 한 해 였습니다. 결과적으로 올해 했던 여러 경험들이, 제가 원하는 저의 미래를 앞으로 더 뚜렷하게 그려볼 수 있게 되었습니다. 2개의 프로젝트, 풀스택 개발 가장 큰 변화는 1월달부터 4월달까지의 기록일텐데요. 페오펫이란 펫 테크 플랫폼 회사에서 정말 치열하게 일했습니다. 개발 인력이 부족한 상황에서 타이트한 마감 기한을 맞추기 위해서 주말은 물론이고 평일 새벽까지 일에 몰입해서 일했습니다. 개발 뿐만 아니라, 운영 업무와 기존 레거시 프로젝트에 신규 기능을 추가하는 일까지. 이 때 겪었던 경험들은, 인생에 있어서 다시 하기 어려운 소중한 성장의 경험이었다고 생각합니다. 또 이 기간동안 백엔드 개발자로서 겪을 수 있는 다양.. 생각정리/회고 2024. 1. 4. [Web] SpringBoot 환경에서의 세션 인증 방식과 토큰 인증 방식 서론 오늘은 인증과 인가 기능을 구현할 때, 꼭 짚고 넘어가야 하는 세션 인증 방식과 토큰 인증 방식의 장/단점을 비교해보겠습니다. 그리고 스프링에선 어떻게 구현할 수 있는지 간략하게 소개드리겠습니다. 대상 독자 인증/인가 기능을 처음 구현해보시는 분들, 이전에 인증/인가 기능을 구현해봤지만 잘 기억이 나질 않는 분들, 이와 관련된 이론적 지식들을 알고 싶은 분들에게 이 글을 추천합니다. 본론 인증과 인가 인증이란 유저를 식별할 수 있는 정보(ex - ID/PW, 소셜로그인 정보)를 통해, 유저가 적합한 유저인지 판단하는 방법을 말합니다. 인가란 인증된 유저에게 권한을 부여하여, 해당 프로그램 기능에 접근할 수 있도록 허용하는 것을 말합니다. 반대로 권한이 없는 유저는 접근하지 못하도록 막는 것을 말합니.. Web 2023. 12. 13. [기타] SpringBoot 환경에서 Swagger 3.0을 적용하는 방법 오늘은 SpringBoot 환경에서 Swagger를 적용하는 방법에 관해서 알아보도록 하겠습니다. 정의 Swagger란 개발자가 REST 웹 서비스를 설계, 빌드, 테스트, 문서화하는 일을 도와주는 오픈 소스 소프트웨어 프레임워크입니다. Spring Boot 3.0 이상 버젼에서는? Spring Boot 3 부터는 별도의 설정 없이, 아래 의존성만 추가해주면 자동으로 설정이 완료됩니다. 설치 후, 서버 구동한 뒤, [URL]/swagger-ui/index.html에서 확인 가능합니다. implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' Spring Boot 3.0 이하 버젼에서는? (Gradle) Swagger 3.0 기준으로.. 기타 2023. 12. 2. [Blog] 개발 블로그를 시작하는 방법 얼마 전, 블로그 누적 조회수가 10만을 넘었습니다. 3년째 운영해온 입장에서 꽤 상징적이었는데요, 앞으로 더 열심히 글을 적어봐야겠다는 생각이 들며 동시에 어떤 생각으로 운영해왔는지 또 앞으로 어떻게 운영할 것인지 생각을 정리해봤습니다. 저보다 이미 좋은 성과를 거두고 계시고, 더 오랫동안 블로그를 운영해오고 계신 분들은 이 글이 큰 도움이 되진 않으실 것 같습니다. 재미로 봐주시는 건 환영입니다. 기술 블로그를 운영하게 된 계기 먼저 이렇게 묻고 싶습니다. 개발자인 우리는 왜 글을 써야 할까요? 그에 대한 답을 이 영상으로 갈음하고 싶습니다. https://www.youtube.com/watch?v=V9AGvwPmnZU&ab_channel=EO%EC%9D%B4%EC%98%A4 저는 개발자를 시작할 때.. 생각정리 2023. 11. 28. [Alogorithm] 알고리즘 공부를 시작하는 올바른 방법 본 글은 알고리즘을 이제 막 공부하기 시작한 분들에게 적합한 글입니다. 이제 막 알고리즘에 눈 뜬 입장에서, 처음 알고리즘을 접하는 분들께 드리는 조언을 담아보았습니다. 저보다 알고리즘에 대해 잘하고 자신 있으신 분들은 이 글이 큰 도움이 되진 않으실 것 같습니다. 재미로 봐주시는 건 환영입니다. 나의 코딩테스트 실패 경험은 현재 진행형코딩테스트, 알고리즘.. 항상 도전과 이직의 발목을 잡았던 것은 코딩 테스트였다. 처음 제대로 된 알고리즘 테스트를 본 건, 2022년 봄이었다. 프론트엔드 개발자로서 첫 취업하기 전에도 본 적은 있지만, 코딩테스트를 보는 회사에 합격한 것은 아니었으니까. 창업에 관심이 많던 나는 소프트웨어 마에스트로 과정에 지원했지만, 코딩 테스트라는 허들 앞에 좌절했다. 그 때 당시,.. CS/알고리즘 2023. 11. 27. [자료구조] 헷갈리는 트리 종류 정리 이진 트리 (Binary Tree) 이진트리는 각각의 노드가 최대 두 개의 자식 노드를 가지는 트리 자료구조입니다. 이진트리에는 여러 종류가 있습니다. 정이진트리(Full binary tree), 포화이진트리(Perfect binary tree), 완전이진트리(Complete binary tree), 균형이진트리(Balanced binary tree), 이진 탐색 트리 (Binary Search Tree), 균형 이진 트리, AVL Tree 등이 있습니다. 이 중에서도 이진 탐색 트리, 균형 이진 트리, 균형 이진 탐색 트리, AVL Tree에 관해 알아보도록 하겠습니다. 이진 탐색 트리 (Binary Search Tree) 이진 트리 기반의 탐색을 위한 자료구조입니다. 특성으로는 모든 원소의 키는 유일.. CS/자료구조 2023. 10. 30. 이전 1 2 3 4 5 6 7 8 ··· 16 다음 반응형