본문 바로가기

테크 이야기

함수형 vs 객체지향 프로그래밍의 이해 알고리즘 수업을 듣고 있었다. 렉처러는 알고리즘 분야에서 많은 저명한 논문을 발표한 옥스포드의 Ralf Hinze 교수였다. 그는 OOP와 FP(Functional Programming)을 아래의 수학식을 통해서 간단히 정의한 뒤 설명을 덧붙였다. OOP와 FP를 설명하는데 있어 서 어떤 설명도 이 수학식보다 간단 명료할 수 있을까? 간혹, FP를 실제 코드에 적용하다 보면 가끔 OOP와 혼용되어 identity가 조금 흔들릴 때가 있지만 그럴때 다시금 이 철학을 되새겨야 한다. 더보기
나라별 개발자 구인통계 (한국,미국,영국) 새로운 웹 프로젝트를 기획하면서 어떤 기술스택을 가져갈지에 대한 고민이 있었다. 그리고 그 고민으로 각 잡사이트를 뒤지면서 구인 현황들을 조회해봤다. 물론, 비지니스와의 연계성뿐만 아니라 개발자의 향후 경쟁력 둘다 고려해야 했다. 비지니스에 최적화만 고려할 수 없는 것이 개발자들이 충분히 흥미가 있어야 하고 또 그 기술적인 투자가 헛되지 않아야 개발 시너지가 생기기 때문이다. 노드를 기반으로 한 MEAN 스택과 파이썬의 장고와 플래스크 그리고 루비 중에 어떤 스택을 선택해야 될지에 대한 고민이 이어졌다. MEAN(Mongo, Express, Angular.js, Node.js)스택의 경우 API 기반의 서비스나 싱글 애플리케이션과 같은 모바일 환경에는 최적화 되었지만 일단, 웹이 주를 이루는 서비스 부분.. 더보기
node.js와 닷넷은 어떻게 다른가? 오늘 아침에 훈스닷넷에 올라온 질문글에 대한 답변으로 node.js와 닷넷의 웹 서버 동작 구조에 대한 썰을 풀어보고자 한다. 이전 글 "완전히 새로운 닷넷 개발 환경이 온다"에서 런던에서 게임을 개발할 때 IIS기반의 ASP.NET 웹 페이지를 개발하다가 Node.js 로 옮겨 같 사례를 언급한적이 있었다. 당시 그 팀은 SignalR 기술을 이용해서 플래쉬 게임의 데이터를 닷넷으로 구현된 서버에 전달했다. 서버의 메모리 보다는 CPU 효율이 낮다보니 여러 가지 테스트를 거쳐 node.js가 당시 시나리오에서 더 좋은 효율을 가져와 교체하게 되는 결정을 하게 되었다. 이번 글에서는 Node는 어떻게 동작되고 닷넷의 웹 서버는 요청을 어떻게 처리하는지 살펴보도록 하겠다. 먼저 성능에 대한 이야기를 하기 .. 더보기
닷넷의 완전히 새로운 웹 개발 환경이 온다. 닷넷 플랫폼에서는 작년 9월부터 vNext에 대한 소식들로 많이 달구어져 왔다. 이번 글에서는 ASP.NET5(vNext)의 출시 배경과 무엇이 달라졌는지 또 향후의 기대에 대해서 짧고 굵게 요약해 보겠다. 왜 새롭게 바꾸었나? 여러가지 이유가 있지만 먼저 자바와 닷넷은 이제 서비스 개발에 있어서 비주류의 분위기로 흘러 가고 있는 것에 있다. 물론, 국내만 이야기 하는 것은 아니다. 무엇보다도 실리콘 벨리의 스타트업들만 보더라도 자바나 닷넷의 안정성 이면의 무거운 웹 서버 환경을 선호하지 않고 있는 것이 추세이다. 즉, 서비스 개발에 있어서는 거의 Ruby on Rails와 Node.js 그리고 DJango정도가 주측으로 자리를 잡아가고 있는 것이 부인할 수 없는 현실이다. MS도 S.I 환경의 엔터프라.. 더보기
2014.12.18 읽을거리들 for developers 개발&디자인 리소스 TOP 22 my sql 관리 툴 TOP 10 Angular.JS를 시작하기 전에 알아야 할 5가지 개발자들에게 필요한 크롬 익스텐션 15가지 BDD 테스트 자동화의 소개 with Serenity and JUnit API가 적작물이 되어서는 안된다. 2014년도를 빛낸 JQuery 플러그인 25개 더보기
닷넷 개발스택과 웹서버의 경량화 웹 프레임워크의 경량화가 유행처럼 번지면서 또 오픈스택이 실리콘 벨리의 스타트업 심장과 같은 역할을 하기 시작하면서 닷넷 개발 스택도 많이 변하기 시작했다. 무거운 닷넷 프레임워크와 IIS 같은 윈도우에만 의존하기 보다는 이제 경량화할 수 이는 프레임워크를 찾기 시작한 것이다. 그래서 영국에서 요즘 많이 유행하고 있는 닷넷 스택을 보자면 Nancy 프레임워크를 기반으로 Azure, EF, Angular 정도가 기본이 되는 것 같다. 솔직히 국내에서는 닷넷 개발자의 입지가 좁다보니 node.js나 자바로 옮겨가는 것을 많이 보지만 실제로 닷넷의 성능이나 기능이 후져서가 아니다. 그렇다면 ruby나 파이썬을 구동하는 웹 프레임워크 처럼 가볍게 갈 수 없을까에 대한 해답이 바로 nancy프레임워크가 될 것이다.. 더보기
프로그래밍 언어를 무기에 비교해 보자면 출처: http://9gag.com/gag/anXEbe0?ref=t.mw 더보기
다중 스레드들은 프로그램을 더 느리게 만든다 기술을 두고 보면 참 예측하기 어렵다. 모노토닉하게 한 방향으로 발전하지 않기 때문이다. 어떤 한 모델이 한참 유행이 되다가도 다시 본질을 찾아가는 사례가 많다. 그런 관점에서 아래 그림은 참 의미가 있다. 한때는 굉장히 화려하고 rich한 웹 페이지가 유행 하다가도 지금은 오히려 심플하고 사용자 반응에 더 집중한 웹 페이지를 선호한다. 이와 비슷한 관점으로 병렬 프로그램과 멀티 쓰레드 프로그래밍이 다수의 CPU를 기반으로 하는 하드웨어를 기반으로 선풍적인 유행으로 다가 왔지만 결국 지금은 싱글 스레드에 더 집중하고 있다. node.js 사례도 마찬가지이다. 아파치 웹서버처럼 다중 스레드를 지원하는 모델 보다 단일 스레드를 기반으로 하되 이벤트를 중심적으로 진행하는 플로우가 훨씬 성능이 좋다. 이런 의미.. 더보기
SOLID 디자인 원칙을 DB 설계에 적용하기 객체지향 프로그래밍에서 거의 교과서라고 할 수 있는 SOLID 디자인 원칙이 데이터베이스에도 적용할 수 있는 사례의 아티클을 발견했다. 물론, 2013년에 작성된 글이지만 내용이 신선해서 링크를 첨부한다. Building SOLID Databases: Introduction Building SOLID Databases: Single Responsibility and Normalization Building SOLID Databases: Open/Closed Principle Building SOLID Databases: Liskov Substitution Weirdness Building SOLID Databases: Interface Segregation, or Keep Stored Procedures.. 더보기
풀리지 않는 문제에 집착하는 것 개발자로 일하다 보면 그럴때가 있다. 다른 일들은 다 완료했는데 하나의 문제가 풀릴듯 말듯 하며 나의 발목을 잡는다. 다음날 해도 될 일이지만 왠지 처음부터 해야만 하는 것 같은 그런 기분 때문에 집에 가지도 못하고 앉아있다. 하지만 대부분 그런 문제는 앉아 있는다고 풀리지 않았다. 지금은 오히려 이런 문제에 봉착했을때 오래 앉아 있지 않는다. 오히려 커피를 마시며 집에 가는 길에 왜 그게 풀리지 않았는지를 생각해 본다. 아니면 다음날 아침 샤워를 하면서 그 문제를 가볍게 꺼내 본다. 그렇게 한발짝 뒤에서 그 문제를 다시 볼때 가끔은 그 답이 너무나 가까운 곳에 있기도 했고, 해결 전략을 어느정도 정리하는 것도 가능했다. 하지만 모니터 앞에 앉아 너를 해결해야만 속 시원하게 집에 갈 수 있을 것 같은 그.. 더보기
이베이(ebay)의 몽고디비(Mongodb) 활용사례 이베이에서 몽고디비를 활용하고 있는 사례를 분석해보고자 한다. NOSQL에 대한 이해가 없었다면 아마 이번 글을 통해서 쉽게 개념을 잡아 갈 수 있을 거라고 생각한다. 그들은 이전에 DB에 테이블에만 의존하던 검색을 메모리 캐쉬(디비)를 이용해서 속도를 향상시킬 수 있었는데 이 사례가 옥션바이트 블로그에 자세히 소개되어있다. 그들은 클라우드 관리와 메타데이터 저장공간 그리고 사용자들이 검색어를 입력했을 때 그와 관련된 연관 검색어들을 보여주고 있다. 이런 작업들을 몽고DB같은 nosql을 활용해서 속도를 올릴 수 있었다. 그럼 보다 자세히 이 사례를 살펴보도록 하자. 먼저 연관검색어는 아래와 같은 기능이다. 사용자가 타이핑 할 때마다 연관 검색어를 찾아서 보여주는 것이다. 이 때 서버로의 호출이 일어나게.. 더보기
테스트 자동화와 TDD의 소개 1. 테스트 자동화와 TDD 박경훈2. 진행순서  자동화 된 테스트가 없다면?  자동화 된 테스트의 정의  TDD의 소개3. 자동화 된 테스트가 없다면?4. Fact1. 소프트웨어의 소스는 복잡하게 연결 되어 있다.5. 작은 한 부분이 수정된다면?6. 모든 기능을 다시 테스트 해야 한다.7. Fact2. 소스코드는 시간이 흐르면 녹이 슨다.8. 끊임없이 OOD(Object Oriented Design)와 패턴 구문들을 적용해가며 리펙토링 해야 한다.9. 하지만 리펙토링이 어려운 이유10. 모든 기능을 다시 테스트 해야 한다.11. 자동화 된 테스트가 없다면?  자체 버그 검출 능력 저하 - 모든 기능을 테스트 하기 어려움  소스 코드의 품질 저하 - 어디서 버그가 생길지 모르기 때문에 잘못 된 .. 더보기