Socket.IO는 무엇인가? 브라우저와 서버간 이벤트 기반의 실시간, 양방향 통신을 가능하게 하는 라이브러리다. 원리 웹소켓 연결을 시도하고 가능하지 않으면 HTTP 롱폴링 요청에 대해 fall back 한다. ** 웹소켓은 통신 프로토콜로 서버와 브라우저간 양방향 (full-duplex) 낮은 지연 채널을 제공한다. 브라우저가 웹소켓을 지원 한다 (2020년 전체 브라우저의 97%가 웹소켓을 지원) 클라이언트-서버간 웹소켓 통신을 막는 요소 (프록시, 방화벽)은 없다. 이 같은 조건에 socket.io를 웹소켓 API의 래퍼로 고려할 수 있다. Socket.io는 (래퍼니까) 웹소켓 객체에 대해 추가적인 기능을 제공한다. 대표적인 기능 안정성 (프록시, 로드밸런서, 방화벽, 바이러스 감시 소프트웨어가..
젠킨스는 소프트웨어 개발의 지속적인 통합을 도와주는 대표적인 오픈소스 도구입니다. 비슷한 서비스로 Travis 그리고 GitLab에서 제공하는 CI 파이프라인도 있습니다. Travis는 오픈소스를 제외하고는 유료로 사용해야하는 제약사항이 있고, GitLab은 이번에 새로운 프로젝트를 시작하면서 우연히 사용하게 되면서 CI 통합 툴킷이 있다는 것을 처음 알게 되었습니다. GitLab CI도 오픈소스이며 빌드 스크립트를 작성하는 방식은 Travis에 더 가까운 것 같은데 시작하거나 사용하기 쉽다고 합니다. GitLab에서 제공하는 Jenkins와 GitLab CI를 비교 글을 참고해봐도 좋을 것 같습니다. 사실 항상 CI/CD에 대한 개념이나 로망만 가지고 있다가 실제로 CI 도구를 사용해 빌드 및 배포 자..
Ionic Vs. React Native, 어떤 프레임워크가 크로스 플랫폼 모바일 앱 개발에 좋을까AngularJS를 기반으로 한 Ionic1과 Angular를 기반으로 하는 Ionic2+를 모두 프로젝트에 적용해본 입장에서 최근 React Native를 선호하는 현상에 대해 이 두 프레임워크를 비교해보아야 겠다는 생각이 들어 자료 조사를 시작했습니다. 이 둘의 역사보다는 현재 이 시점에서 만약 두 프레임워크 중 하나를 선택한다면 각각이 가지는 장점과 단점이 무엇인지에 중점을 두었어요. 우선 참고한 레퍼런스를 보시면 아시겠지만 Ionic과 React Native를 비교하는 글들이 적지는 않은만큼 이 주제에 대한 논의가 꽤 되었다는 것을 알 수 있습니다. 일반적인 얘기를 포함해서 Ionic 포럼에서 말하는..
아키텍트의 존재와 역할에 대해복잡한 IT 환경에 대한 밑그림을 설계하고 그것의 성공적인 운영을 책임질 수 있는 유일한 전문 직종이라는 측면에서, 아키텍트의 중요성은 아무리 강조해도 지나치지 않다.아키텍트는 소프트웨어의 아키텍처를 설계하는 사람이다. 소프트웨어의 개발 과정에 대해 간략히 집고 넘어가면 크게 요구사항 > 설계 > 구현 > 검증의 단계가 있다. 여기서 요구사항과 설계의 역할을 맡고 있는 사람이 아키텍트라고 볼 수 있다. 국내에서도 아키텍트에 대한 중요성이 많이 강조되고 있다. 하지만 아키텍트라는 직업은 마치 바로 과장이 될 수는 없는것처럼 첫 직업으로는 가질 수 없다. 오랜 경험을 바탕으로 결정을 내리고 프로젝트를 리딩하는 일이기 때문에 많은 책임과 결정에 대한 통찰력을 필요로 한다. 내가 지..
Dagger는 한 번 이해하고 나면 당연하게 느껴지지만 한 번 이해하는 것이 쉽지 않은 라이브러리라고 한다. 처음 접하기에는 생소한 개념이기 때문이다. 그럼에도 불구하고 많이 회자되는 이유는 Dagger를 적용함으로써 얻을 수 있는 장점이 더 크기 때문이라 생각한다. 생소한 개념과 구조를 이해하려면 이 라이브러리의 핵심이 무엇인지 잘 알고 있는 것이 중요하다. Dependency부터 Dependency Injection과 DI 라이브러리로써의 Dagger2의 특징을 정리해 보는 것이 이 글의 목적이다. Dependency 는 무엇인가?Dependency (또는 의존성)는 코드에서 두 모듈간의 연결이라고 볼 수 있다. 객체지향언어에서는 두 클래스간의 관계라고도 말한다. 일반적으로 둘 중 하나가 다른 하나를..
Repository Pattern(by Edward Hieatt and Rob Mee)Repository (레파지토리) 패턴은 아키텍처라기보다는 디자인 패턴중에 하나인데 데이터가 있는 어떤 저장소이든 간에 데이터를 사용하는 로직에서 분리시키는 것을 목적으로 한다. 아래는 Martin Fowler의 Patterns of Enterprise Application Architecture (P of EAA)에서의 정의다.도메인과 데이터 사이를 중재하는 매핑 레이어로 도메인 객체에 접근하기 위한 콜렉션과 같은 인터페이스를 사용한다. 도메인은 필요한 데이터를 레파지토리에 요청하고, 레파지토리는 도메인이 요청한 정보를 데이터를 가공해서 보내준다. 이 패턴을 사용하는 장점은 도메인이 실제로 어떤 데이터를 사용하는지는 ..
들어가기 전에..- 제목을 적고 보니 왠지 저 제목과 똑같이 생긴 딱봐도 지루해보이는 소프트웨어 공학 전공서적을 언젠가 도서관에서 본것 같은 착각이 들었다. - 근 2년동안 '아키텍처'에 대해 배웠던 기억과 현실에서 아키텍처 설계에 대한 현재까지의 경험에 대한 글을 아키텍처에 대한 이론적 내용을 까먹지 않고 아키텍처 설계에 대한 경험도 어느 정도 갖춘 시점에서 작성해보고 싶었는데 이론을 까먹는 속도와 경험의 속도가 다름을 깨달았다.. - 혹시 이 글을 보시고 추가할 부분이나 의견 달아주시면 정말 감사합니다..! 소프트웨어 아키텍처 정의소프트웨어 아키텍처 분야에서 아버지라 불리우고 자가적응 시스템으로도 유명하신 David Garlan의 논문 서론에서는 아키텍처를 다음과 같이 정의한다. "아키텍처는 요구사항..
도커는 무엇인가?도커는 애플리케이션을 실행하고 적재시키고 개발하기 위한 오픈 플랫폼이다.도커는 애플리케이션 전달을 더 빠르게 하기 위해 설계되었다. 우리의 애플리케이션을 인프라로부터 분리시킬 수 있으며 인프라를 관리되는 앱처럼 처리할 수 있다. 도커는 코드를 적재하는 것을 빠르게 해주며 테스트를 빠르게 해주고 배포를 빠르게 해주고 코드 작성과 실행사이 사이클을 줄인다. 도커는 워크플로우와 도구에 경량화된 컨테이너 가상화 플랫폼을 결합한다. 코어에서, 도커는 거의 어떤 앱이라도 안전하게 컨테이너에 고립시켜 동작시킬 수 있는 방법을 제공한다. 고립과 보안은 많은 컨테이너를 호스트에 자율적으로 작동할 수 있게 한다. 컨테이너의 경량화 환경은 하드웨어 제약을 더 넘을 수 있음을 의미하낟. 컨테이너 가상화를 둘러..
아키텍처를 공부하다가 아키텍처 스타일과 아키텍처 패턴의 차이를 궁금해 하는 건 누구나 거쳐가는 과정인 것 같다.실제로 쓸 일이 없거나 딱히 관심이 없으면 사실 스타일이고 패턴이고 알 필요 없겠지만아키텍처를 내 생각만으로 만드는 것과 그 동안 수많은 설계자들의 수 없는 고민을 거쳐 나온 문제 해결의 지혜를 이용하는 것과 얼마나 차이가 있을까.(하하 이제 밑의 내용을 보지 않을 수 없다) 그런데 아키텍처 스타일과 아키텍처 패턴의 사용 용도가 정말 다른 걸까? 굳이 차이를 이해해야 하는 건가?우선 정의를 보자.아키텍처 스타일 (Architectural Style): 요소와 관계 타입과 더불어 어떻게 사용되는지에 대한 제약사항 집합을 가지는 표준 (Bass, Clements, and Kazman 2003)아키텍..
Q1. 소프트웨어 아키텍처가 무엇일까?현재 이 질문에 대한 완벽한 한 마디는 없다고 한다. 하지만 아키텍처에 대한 정의는 150여 가지가 존재한다고 카네기 멜론 SEI (Software Engineering Institute)에서 얘기함. 대표적인 정의로 "프로그램 또는 시스템 컴포넌트 구조, 상호관계, 설계와 진화를 통제하는 원리와 가이드라인" - Garlan and Perry 1995 Q2. 아키텍처의 목적은 무엇일까?아키텍처의 주요 목적은 시스템의 품질 (Qualities)과 요구사항 (Requirements) 그리고 비즈니스 골 (Business goals)의 만족을 확신시키는 것 Q3. 아키텍처는 뭐고 디자인은 뭐고 차이가 뭐지?아키텍처적인지 아닌지에 대한 결정은 Context에 좌우하지 일반적..
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- React Native
- iterms
- git 실수
- 스크럼
- 구독료 계산기
- node.js
- patch-packages
- 애드 캣멀
- retrofit
- 시간 관리
- git ssh 연동
- 최은영작가님
- 소프트웨어 공학
- release build issue
- 창의성을 지휘하라
- egghead
- 안드로이드
- 쉽게 말하는법
- 그리고 상상력
- 좋은 습관이란
- gradle
- Android
- 이미지 여백주기
- 공존이 필요해요
- multiDex issue
- 아키텍처
- MVP
- 이미지 일괄 변경
- go
- 소름돋는필력
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함